XStream使用方法

前端之家收集整理的这篇文章主要介绍了XStream使用方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;从java对象序列化为xml,toXML()即可,很方便。xstream也支持注解方式,这些都是为了简化输出而设计,下面为大家简单说一下这几个注解的含义和用法

  1. @XStreamAlias("cat")
  2. public class Cat {
  3. //名字
  4. private String name;
  5. //大小
  6. @XStreamAlias("catAge")
  7. private Integer age;
  8. //玩具球 球具有颜色属性
  9. //@XStreamImplicit 去除<Balls></Balls>显示
  10. private List<Ball> balls;
  11.  
  12. Cat(String name,Integer age,List<Ball> balls){
  13. this.name = name;
  14. this.age = age;
  15. this.balls=balls;
  16. }
  17. }
Ball
  1. @XStreamAlias("ball")
  2. public class Ball {
  3. private String color;
  4.  
  5. Ball(String color){
  6. this.color = color;
  7. }
  8. }
测试类
  1. public class XmlUtil {
  2. private static final String ROOT_ELEMENT = "data_content";
  3.  
  4. public static Object dataToObject(String dataContext,String dataType,Class clazz) {
  5. if ("xml".equals(dataType)) {
  6. return xmlToObject(dataContext,clazz);
  7. } else if ("json".equals(dataType)) {
  8. return jsonToObject(dataContext,clazz);
  9. }
  10. return null;
  11. }
  12.  
  13. private static Object jsonToObject(String dataContent,Class clazz) {
  14. return JSONObject.toJavaObject(JSON.parSEObject(dataContent),clazz);
  15. }
  16.  
  17. private static Object xmlToObject(String dataContext,Class clazz) {
  18. String className = clazz.getSimpleName();
  19. XStream xstream = new XStream();
  20. //报文的根元素替换为需要转化的java对象类名
  21. dataContext = dataContext.replace(ROOT_ELEMENT,className);
  22. xstream.alias(className,clazz);
  23. return xstream.fromXML(dataContext);
  24. }
  25.  
  26. public static void main(String[] args) {
  27. try {
  28. //初始化cat
  29. List<Ball> balls = new ArrayList<Ball>();
  30. balls.add(new Ball("red"));
  31. Cat cat = new Cat("馄饨",1,balls);
  32. //初始化结束
  33. //为了方便查找 将文件制定到D盘cat.xml中
  34. FileOutputStream fos = new FileOutputStream("D:/cat.xml");
  35. XStream xstream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-","_")));
  36. xstream.processAnnotations(Cat.class);//将Cat.class类上的注解将会使用
  37. xstream.toXML(cat,fos);
  38. } catch (FileNotFoundException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }
  43.  
  44.  
  45.  
  46.  

其中的一种情形下的数据输出

  1. <cat>
  2. <name>馄饨</name>
  3. <catAge>1</catAge>
  4. <balls>
  5. <ball>
  6. <color>red</color>
  7. </ball>
  8. </balls>
  9. </cat>

转载:http://blog.csdn.net/robert_mm/article/details/8459879

猜你在找的XML相关文章