XStream操作XML和JavaBean对象

前端之家收集整理的这篇文章主要介绍了XStream操作XML和JavaBean对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

以下 JavaBean对象的Person、Profile、Address类是参考一个网友的,源地址没找到,在此感谢下.

1、简单的 JavaBean-->XML Java到xml,用toXML()方法

//目标对象 
     Address address1 = new Address("上海市大连路","450001"); 
     Address address2 = new Address("上海市临平路","710002"); 
     List<Address> addList = new ArrayList<Address>(); 
     addList.add(address1); 
     addList.add(address2); 
     Profile profile = new Profile("JAVA工程师","150***********","备注说明"); 
     Person person = new Person("XStream测试","26",profile,addList); 

     //转换装配 
     XStream xStream = new XStream(); 
     /**************    设置类别名   ****************/ 
     xStream.alias("PERSON",Person.class); 
     xStream.alias("PROFILE",Profile.class); 
     xStream.alias("ADDRESS",Address.class); 
     
     String xml = xStream.toXML(person); 
     System.out.println(xml + "\n"); 
     
     /*************  设置类成员的别名 ***************/ 
     //设置Person类的name成员别名 姓名 
     xStream.aliasField("姓名",Person.class,"name"); 
     /*[注意] 设置Person类的profile成员别名PROFILE,这个别名和Profile类的别名一致,* 这样可以保持XStream对象可以从profile成员生成的xml片段直接转换为Profile成员,* 如果成员profile的别名和Profile的别名不一致,则profile成员生成的xml片段不可 
      * 直接转换为Profile对象,需要重新创建XStream对象,这岂不给自己找麻烦?       */ 
     xStream.aliasField("PROFILE","profile"); 
     xStream.aliasField("ADDLIST","addlist"); 
     xStream.aliasField("Add",Address.class,"add"); 
     xStream.aliasField("Job",Profile.class,"job"); 
     xml = xStream.toXML(person); 
     System.out.println(xml + "\n"); 

     /*******  设置类成员为xml一个元素上的属性 *******/ 
     xStream.useAttributeFor(Address.class,"zipcode"); 
     /*************  设置属性的别名 ***************/ 
     xStream.aliasAttribute(Address.class,"zipcode","Zipcode"); 
     xml = xStream.toXML(person); 
     System.out.println(xml + "\n"); 
     
        /*//对指定的类使用Annotation注解
     xStream.processAnnotations(Person.class);
        //启用Annotation注解
     xStream.autodetectAnnotations(true);
     xml = xStream.toXML(person); 
     System.out.println(xml + "\n"); 
     */
     
     //将ListBean中的集合设置空元素,即不显示集合元素标签
//	    xStream.addImplicitCollection(Person.class,"ADDLIST");
        
        //设置reference模型
//	    xStream.setMode(XStream.NO_REFERENCES);//不引用
//	    xStream.setMode(XStream.ID_REFERENCES);//id引用
        //xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);//绝对路径引用
//	    xml = xStream.toXML(person); 
//	    System.out.println(xml + "\n");

2、xml文档转换为JavaBean Xml到Java,用fromXML()方法

注意:JavaBean对象中有的字段XML文档中可以没有,但XML文档中有的字段,JavaBean中一定要有对应的字段
StringBuilder sb = new StringBuilder();
  sb.append("<xml><TouserName><![CDATA[");//
  sb.append("toUserName123");
  sb.append("]]></TouserName><FromUserName><![CDATA[");
  sb.append("fromUserName123");
  sb.append("]]></FromUserName><CreateTime>");
  sb.append("123456");
  sb.append("</CreateTime><MsgType><![CDATA[text]]></MsgType></xml>");//
  
  
  //不需要XPP3库 ;这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。
    XStream xStream = new XStream(new DomDriver());
    //说明 当前节点下的内容对应哪个javabean对象
    xStream.alias("xml",BaseMessage.class);
    //注意:如果文档中的节点名称和JavaBean中字段名要一一对应,不然会报错
    xStream.aliasField("TouserName",BaseMessage.class,"ToUserName");
    BaseMessage baseMessage = (BaseMessage) xStream.fromXML(sb.toString());
    System.out.println(baseMessage.getFromUserName()+" "+baseMessage.getToUserName()+" "+baseMessage.getMsgType());

以上只是一般的操作,基本够用,如要特殊要求或深入研究下,可参考下这篇文章http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html

猜你在找的XML相关文章