Xstream解析XML,包括对数组和List的处理

前端之家收集整理的这篇文章主要介绍了Xstream解析XML,包括对数组和List的处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用Xstream须要引入xstream-1.4.jar和xpp3-1.1.4c.jar

  1. import com.thoughtworks.xstream.XStream;
  2. import com.hikvision.bms.main.Person;
  3. /**
  4. * 使用Xstream解析XML字符串
  5. */
  6. public class XstreamDemo {
  7. /**
  8. * xml字符串解析为实体类对象
  9. */
  10. public void str2Java() {
  11. String str = "<person>"
  12. + "<name>Jack</name>"
  13. + "<age>11</age>"
  14. + "<sex>男</sex>"
  15. + "<telphone>110</telphone>"
  16. + "<lovers>parents</lovers>"
  17. + "<lovers>wife</lovers>"
  18. + "<friends>"
  19. + "<string>LiLei</string>"
  20. + "<string>LuXi</string>"
  21. + "</friends>"
  22. + "<roles>"
  23. + "<string>friend</string>"
  24. + "<string>father</string>"
  25. + "<string>doctor</string>" //注意string首字母必须小写
  26. + "</roles>"
  27. + "</person>";
  28. XStream xStream = new XStream();
  29. xStream.alias("person",Person.class);
  30. xStream.alias("lovers",String.class); //private List<String> lovers;是string类型
  31. xStream.addImplicitCollection(Person.class,"lovers");//隐式集合 隐藏lovers
  32. Person person = (Person) xStream.fromXML(str);
  33. outPutInfo(person);
  34. }
  35. /**
  36. * 将XML文件解析成实体类对象
  37. */
  38. public void str2JavaFormXML() {
  39. XStream xStream = new XStream();
  40. xStream.alias("person","lovers");//隐式集合 隐藏lovers
  41. Person person = (Person)xStream.fromXML(XstreamDemo.class.getResourceAsStream("person.xml"));
  42. outPutInfo(person);
  43. }
  44.  
  45. /**
  46. * 实体类转换为xml字符串
  47. */
  48. public void java2XmlStr() {
  49. Person person = new Person();
  50. person.setName("Lucy");
  51. person.setAge(22);
  52. person.setSex("女");
  53. person.setTelphone("120");
  54. XStream xStream = new XStream();
  55. xStream.alias("Girl",Person.class);
  56. String xmlStr = xStream.toXML(person);
  57. System.out.println(xmlStr);
  58. }
  59. public void outPutInfo(Person person) {
  60. System.out.println("name:" + person.getName());
  61. System.out.println("sex:" + person.getSex());
  62. System.out.println("telphone:" + person.getTelphone());
  63. for (String lover : person.getLovers()) {
  64. System.out.print(lover + " ");
  65. }
  66. System.out.println();
  67. for (String friend : person.getFriends()) {
  68. System.out.print(friend + " ");
  69. }
  70. System.out.println();
  71. for (String role : person.getRoles()) {
  72. System.out.print(role + " ");
  73. }
  74. }
  75. /**
  76. * XStream 的常用方法
  77. * xstream.omitField(mytest.class,"name"); 定义某一个属性的值不进行xml序列化。
  78. * xstream.alias("cat",Cat.class);
  79. * xstream.aliasField("age",Cat.class,"mAge"); 对某一个类和类的属性进行别名定义。
  80. * xstream.useAttributeFor(String.class); 对所有String类型的字段定义为属性tag显示
  81. * xstream.useAttributeFor("name".String.class); 对所有String类型的字段名成为name 定义为属性tag显示
  82. */
  83. public static void main(String[] args) {
  84. XstreamDemo demo = new XstreamDemo();
  85. //demo.str2Java();
  86. //demo.java2XmlStr();
  87. demo.str2JavaFormXML();
  88. }
  89. }

person.java

  1. import java.util.List;
  2.  
  3. public class Person {
  4. private String name;
  5. private Integer age;
  6. private String sex;
  7. private String telphone;
  8. private List<String> lovers;
  9. private List<String> friends;
  10. private String[] roles;
  11. /**set和get方法,以下省略**/
  12. }


XML文件 person.xml 放置位置跟XstreamDemo.class同一个目录

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <person>
  3. <name>Jack</name>
  4. <age>11</age>
  5. <sex></sex>
  6. <telphone>110</telphone>
  7. <lovers>parents</lovers>
  8. <lovers>wife</lovers>
  9. <friends>
  10. <string>LiLei</string>
  11. <string>LuXi</string>
  12. </friends>
  13. <roles>
  14. <string>friend</string>
  15. <string>father</string>
  16. <string>doctor</string>
  17. </roles>
  18. </person>

猜你在找的XML相关文章