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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇