XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和Java Bean的互相转换。

最近项目中用到了xml和java bean的转换

用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好

我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?

答案是OK的

使用jar包:org.nuxeo.common.xmap

写个小例子

XML

1.< ?xml version="1.0" encoding="UTF-8"?>

2.< books>

3.< book no="1">

4.< title>java是傻逼< /title>

5.< subject>java< /subject>

6.< subject>xml< /subject>

7.< price>10< /price>

8.< /book>

9.< book no="2">

10.< title>c++程序设计< /title>

11.< subject>C++< /subject>

12.< subject>c< /subject>

13.< price>10< /price>

14.< /book>

15.< /books>

Books类

16.import java.util.ArrayList;

17.import java.util.List;

18.

19.import org.nuxeo.common.xmap.annotation.XNodeList;

20.import org.nuxeo.common.xmap.annotation.XObject;

21.

22.@XObject(value = "books")

23.public class Books {

24. @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)

25. private List< Book> book;

26.

27. public List< Book> getBook() {

28. return book;

29. }

30.

31. public void setBook(List< Book> book) {

32. this.book = book;

33. }

34.

35. public void addBook(Book b){

36. if(book==null){

37. book=new ArrayList< Book>();

38. }

39. book.add(b);

40. }

41.}

42.

Book类

43.import java.util.ArrayList;

44.import java.util.List;

45.

46.import org.nuxeo.common.xmap.annotation.XNode;

47.import org.nuxeo.common.xmap.annotation.XNodeList;

48.import org.nuxeo.common.xmap.annotation.XObject;

49.

50.

51.@XObject

52.public class Book {

53. @XNode("title")

54. private String title;

55.

56. @XNode("@no")

57. private String no;

58.

59. @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)

60. private List< String> subjects;

61.

62. @XNode("price")

63. private int price;

64.

65. public String getTitle() {

66. return title;

67. }

68.

69. public void setTitle(String title) {

70. this.title = title;

71. }

72.

73. public List< String> getSubjects() {

74. return subjects;

75. }

76.

77. public void setSubjects(List< String> subjects) {

78. this.subjects = subjects;

79. }

80.

81. public int getPrice() {

82. return price;

83. }

84.

85. public void setPrice(int price) {

86. this.price = price;

87. }

88.

89. public String getNo() {

90. return no;

91. }

92.

93. public void setNo(String no) {

94. this.no = no;

95. }

96.}

97.

测试类:

98.import java.util.ArrayList;

99.import java.util.List;

100.

101.import org.nuxeo.common.xmap.XMap;

102.

103.

104.public class XmapTest {

105. public static void main(String[] args) {

106. try {

107. //声明一组书的根节点

108. Books books=new Books();

109.

110. //声明一本书

111. Book book=new Book();

112. //书的类型

113. List< String> sj=new ArrayList< String>();

114. sj.add("java");

115. sj.add("xml");

116. //设置书节点的属性

117. book.setPrice(10);

118. book.setTitle("java是傻逼");

119. book.setSubjects(sj);

120. book.setNo("1");

121.

122. //将书节点添加到跟节点

123. books.addBook(book);

124.

125. //声明一本书

126. Book book2=new Book();

127. //书的类型

128. List< String> sj2=new ArrayList< String>();

129. sj2.add("C++");

130. sj2.add("c");

131. //设置书节点的属性

132. book2.setPrice(10);

133. book2.setTitle("c++程序设计");

134. book2.setSubjects(sj2);

135. book2.setNo("2");

136.

137. //将书节点添加到跟节点

138. books.addBook(book2);

139.

140. XMap xmp = new XMap();

141. xmp.register(Books.class);

142.

143. List< String> filters = new ArrayList< String>();

144.

145. System.out.println(xmp.asXmlString(books, "UTF-8", filters, true));

146. } catch (Exception e) {

147. e.printStackTrace();

148. }

149. }

150.}

151.

运行上面这个类就可以生成开头所看见的那个XML的内容

解析xml

152.xmap.register(Books.class);

153. URL url = new File("book.xml").toURL();

154. InputStream in = new FileInputStream(new File("book.xml"));

155. Object[] result = (Object[]) xmap.loadAll(in);

156.

157.Books books=(Books)result[0];

158.

数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)

XML和Java Bean互相转换就此实现。

两个需要注意的地方:1.Xmap包最新下载地址https://maven.nuxeo.org/用最新版本的就行。运行程序时需要把log4j的日志路径配好,否则会报错。s2Xmap需要依赖一个apache的xercesImpl.jar包下载地址http://download.csdn.net/detail/alice_0812/305407

java xmap_转:使用XMAP完成JavaBean和XML之间转换相关推荐

  1. java xmap_使用XMAP完成JavaBean和XML之间转换

    XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介绍如何进行XML和Java Bean的互相转换. 最近项目中用到了xml和java bea ...

  2. JAXB JavaBean与Xml之间转换

    JAXB JavaBean与Xml之间转换问题之二 接着上一篇来说,上一篇主要讲述的是关于jaxb将实体转换为xml的使用方法和注解的一些过程,但是凡事都会有缺点,而上述方法的缺点就是marshall ...

  3. JAXB实现java对象与xml之间转换

    一.Jaxb处理java对象和xml之间转换常用的annotation有: 1. @XmlType 2. @XmlElement 3. @XmlRootElement 4. @XmlAttribute ...

  4. JAXB实现JavaBean和xml互相转换

    一.简介 JAXB(Java API for XML Binding)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.JAXB也提供了将XML实例文档反向生成Java对象树的 ...

  5. java关于对象(javabean)与xml之间的相互转换

    今天我们要探讨的一个问题是,如何将xml格式的字符串转换成对象,以及对象转换成xml字符串. 简介 现如今,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用 ...

  6. java utf 8 转unicode_java 在Unicode和UTF-8之间转换

    /** * utf-8 转换成 unicode * @author fanhui * 2007-3-15 * @param inStr * @return */ public static Strin ...

  7. Java 实现图片转换为ICO以及多种格式图片之间转换

    详细信息请访问我的GitHub网站:https://github.com/HuBoZhi/image4j

  8. Java Jaxb JavaBean与XML互转

    1.Jaxb - Java Arcitecture for XML Binding 是业界的一个标准,是一项能够依据XML Schema产生Java类的技术. Jaxb2.0是Jdk1.6的组成部分. ...

  9. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

最新文章

  1. div如何添加滚动条?
  2. 【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )
  3. 怎么在uefi解锁磁盘_系统重装时,如何秒判Windows启动是UEFI/Legacy?3步就够了!...
  4. RPC框架系列——Protocol Buffers
  5. C++ vector容器类型
  6. zoj2432 hdoj1423 最长公共上升子序列(LCIS)
  7. php验证码图片看不清更换代码,php如何实现验证码看不清换一张的效果
  8. 计算机程序设计语言发展经历了,简述计算机程序设计语言的发展历程
  9. 回归方程的拟合优度检验_回归分析的“拟合优度”是什么?
  10. 小图标下载、gif设计、图片压缩、代码优化
  11. mysql 创建数据库 utf8 命令_mysql创建数据库 utf8
  12. Rayman的绝顶之路——Leetcode每日一题打卡11
  13. 【2020.10.29 洛谷团队赛 普及组】T6 U138025 小武的方程
  14. bootstrap柱状图
  15. MSBI表格模型与多维模型比较
  16. C语言向有序数组中插入一个数使该数组仍保持有序
  17. 伽罗华域(Galois Field,GF,有限域)
  18. alpha shapes提取边界原理及详细步骤
  19. 街霸 隆(Ryu)波动拳(Hadoken)动画(二)细节
  20. JAVA 时间差8个小时的问题

热门文章

  1. 阿里云服务器选购指南(图文教程详解)
  2. Linux安装Docker CE
  3. 塞雷三分钟漫画中国史2
  4. 如果有人告诉你卫星手机会取代基站,那么他非蠢即坏
  5. 平安科技面试问题整理
  6. JEP 286: Local-Variable Type Inference
  7. [深度学习] PyTorch 实现双向LSTM 情感分析
  8. 仿射密码加密解密代码(java)
  9. IEEE文章免费下载方法
  10. rstudio中logit模型代码