java學習

          java學習

           

          jaxb的序列化和反序列化

          1.公司和雇員的實體類

          @XmlRootElement(name="company")

          public class Company {
              //   @XmlElement(name="cname")
              private String cname;
              @XmlElement(name="employee")
              private List<Employee> employees;
                 public Company(String cname,List<Employee> employees){
                 this.cname=cname;
                 this.employees=employees;
                 }
                 public Company(){}
              @XmlTransient
              public List<Employee> getEmployees() {
                  return this.employees;
              }

              public void setEmployees(List<Employee> employees) {
                  this.employees = employees;
              }
          //    public void addEmployee(Employee employee){
          //     if(employees==null){
          //            this.employees=new ArrayList<Employee>();
          //     }
          //     this.employees.add(employee);
          //    }

              public String getCname() {
                  return this.cname;
              }

              public void setCname(String cname) {
                  this.cname = cname;
              }
             
          }

          @XmlType

          public class Employee {
              @XmlElement(name="name")
              private String name;
              @XmlElement(name="id")
              private String id;
              public Employee(String name,String id){
                  this.id=id;
                  this.name=name;
              }
              public Employee(){}
           @XmlTransient
              public String getName() {
                  return name;
              }

              public void setName(String name) {
                  this.name = name;
              }
           @XmlTransient
              public String getId() {
                  return id;
              }

              public void setId(String id) {
                  this.id = id;
              }
            
          }


          測試類:

          public class Test {
                public static void main(String[] args){
                  Test.test01();
              }
              public static void test01() {
                  long l=System.currentTimeMillis();
            try {
             JAXBContext ctx = JAXBContext.newInstance(Company.class);
             Marshaller marshaller = ctx.createMarshaller();
                                  List<Employee> list=new ArrayList<Employee>();
                                  list.add(new Employee("1","1e"));
                                  list.add(new Employee("2", "2e"));
             Company c = new Company("cc",list);
                                  marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
                    //  marshaller.marshal( c,new FileOutputStream("src/"+l+".xml"));
              StringWriter sw = new StringWriter();
             
                marshaller.marshal(c,sw);
                System.out.println(sw.toString());
                test02(sw.toString());
            //     Unmarshaller unmarshaller = ctx.createUnmarshaller();  
               //  File file = new File("src/"+l+".xml");  
               //  Company cc = (Company)unmarshaller.unmarshal(file);  
              // //  System.out.println(cc.getCname());  
              //   System.out.println(cc.getEmployees().get(0).getName());      
              //        System.out.println(file.exists()); 
            } catch (JAXBException e) {
             e.printStackTrace();
            }
           }
               public static void test02(String xml) {
            try {
            // String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><company><employee><name>1</name><id>1e</id></employee><employee><name>2</name><id>2e</id></employee><cname>cc</cname></company>";
             JAXBContext ctx = JAXBContext.newInstance(Company.class);
             Unmarshaller um = ctx.createUnmarshaller();
             Company stu = (Company)um.unmarshal(new StringReader(xml));
             System.out.println(stu.getEmployees().get(0).getName() +","+stu.getCname());
            } catch (JAXBException e) {
             e.printStackTrace();
            }
            
           }
                  public static void test03() {
                      try{
                       JAXBContext context = JAXBContext.newInstance(Company.class);  
                  Unmarshaller unmarshaller = context.createUnmarshaller();  
                  File file = new File("src/test.xml");  
                  Company c = (Company)unmarshaller.unmarshal(file);  
                  System.out.println(c.getCname());  
                  System.out.println(c.getEmployees().get(0).getName());
                      }catch (Exception e){
                     
                      }
                      
                 // System.out.println(people.age);  
                  }
          }



          posted on 2013-09-10 15:14 楊軍威 閱讀(475) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 佳木斯市| 虞城县| 清涧县| 东丽区| 海城市| 黄陵县| 莲花县| 广饶县| 班戈县| 海晏县| 三河市| 大洼县| 金门县| 塔河县| 东光县| 吉木萨尔县| 新化县| 太康县| 平邑县| 洮南市| 盐池县| 息烽县| 贵港市| 泰宁县| 裕民县| 鱼台县| 东宁县| 石棉县| 深泽县| 罗平县| 沁源县| 淅川县| 陵川县| 逊克县| 双牌县| 大姚县| 玛纳斯县| 利辛县| 蚌埠市| 铜梁县| 工布江达县|