java xmap_转:使用XMAP完成JavaBean和XML之间转换
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之间转换相关推荐
- java xmap_使用XMAP完成JavaBean和XML之间转换
XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介绍如何进行XML和Java Bean的互相转换. 最近项目中用到了xml和java bea ...
- JAXB JavaBean与Xml之间转换
JAXB JavaBean与Xml之间转换问题之二 接着上一篇来说,上一篇主要讲述的是关于jaxb将实体转换为xml的使用方法和注解的一些过程,但是凡事都会有缺点,而上述方法的缺点就是marshall ...
- JAXB实现java对象与xml之间转换
一.Jaxb处理java对象和xml之间转换常用的annotation有: 1. @XmlType 2. @XmlElement 3. @XmlRootElement 4. @XmlAttribute ...
- JAXB实现JavaBean和xml互相转换
一.简介 JAXB(Java API for XML Binding)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.JAXB也提供了将XML实例文档反向生成Java对象树的 ...
- java关于对象(javabean)与xml之间的相互转换
今天我们要探讨的一个问题是,如何将xml格式的字符串转换成对象,以及对象转换成xml字符串. 简介 现如今,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用 ...
- java utf 8 转unicode_java 在Unicode和UTF-8之间转换
/** * utf-8 转换成 unicode * @author fanhui * 2007-3-15 * @param inStr * @return */ public static Strin ...
- Java 实现图片转换为ICO以及多种格式图片之间转换
详细信息请访问我的GitHub网站:https://github.com/HuBoZhi/image4j
- Java Jaxb JavaBean与XML互转
1.Jaxb - Java Arcitecture for XML Binding 是业界的一个标准,是一项能够依据XML Schema产生Java类的技术. Jaxb2.0是Jdk1.6的组成部分. ...
- JAVA Bean和XML之间的相互转换 - XStream简单入门
JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...
最新文章
- div如何添加滚动条?
- 【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )
- 怎么在uefi解锁磁盘_系统重装时,如何秒判Windows启动是UEFI/Legacy?3步就够了!...
- RPC框架系列——Protocol Buffers
- C++ vector容器类型
- zoj2432 hdoj1423 最长公共上升子序列(LCIS)
- php验证码图片看不清更换代码,php如何实现验证码看不清换一张的效果
- 计算机程序设计语言发展经历了,简述计算机程序设计语言的发展历程
- 回归方程的拟合优度检验_回归分析的“拟合优度”是什么?
- 小图标下载、gif设计、图片压缩、代码优化
- mysql 创建数据库 utf8 命令_mysql创建数据库 utf8
- Rayman的绝顶之路——Leetcode每日一题打卡11
- 【2020.10.29 洛谷团队赛 普及组】T6 U138025 小武的方程
- bootstrap柱状图
- MSBI表格模型与多维模型比较
- C语言向有序数组中插入一个数使该数组仍保持有序
- 伽罗华域(Galois Field,GF,有限域)
- alpha shapes提取边界原理及详细步骤
- 街霸 隆(Ryu)波动拳(Hadoken)动画(二)细节
- JAVA 时间差8个小时的问题