Java Bean与xml互相转换的方法分析
作者:天涯海角路 发布时间:2021-08-12 13:34:00
标签:Java,Bean,xml
本文实例讲述了Java Bean与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
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book no="1">
<title>java是 * </title>
<subject>java</subject>
<subject>xml</subject>
<price>10</price>
</book>
<book no="2">
<title>c++程序设计</title>
<subject>C++</subject>
<subject>c</subject>
<price>10</price>
</book>
</books>
Books类
import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;
@XObject(value = "books")
public class Books {
@XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)
private List< Book> book;
public List< Book> getBook() {
return book;
}
public void setBook(List< Book> book) {
this.book = book;
}
public void addBook(Book b){
if(book==null){
book=new ArrayList< Book>();
}
book.add(b);
}
}
Book类
import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;
@XObject
public class Book {
@XNode("title")
private String title;
@XNode("@no")
private String no;
@XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)
private List< String> subjects;
@XNode("price")
private int price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List< String> getSubjects() {
return subjects;
}
public void setSubjects(List< String> subjects) {
this.subjects = subjects;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
}
测试类:
import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.XMap;
public class XmapTest {
public static void main(String[] args) {
try {
//声明一组书的根节点
Books books=new Books();
//声明一本书
Book book=new Book();
//书的类型
List< String> sj=new ArrayList< String>();
sj.add("java");
sj.add("xml");
//设置书节点的属性
book.setPrice(10);
book.setTitle("java是 * ");
book.setSubjects(sj);
book.setNo("1");
//将书节点添加到跟节点
books.addBook(book);
//声明一本书
Book book2=new Book();
//书的类型
List< String> sj2=new ArrayList< String>();
sj2.add("C++");
sj2.add("c");
//设置书节点的属性
book2.setPrice(10);
book2.setTitle("c++程序设计");
book2.setSubjects(sj2);
book2.setNo("2");
//将书节点添加到跟节点
books.addBook(book2);
XMap xmp = new XMap();
xmp.register(Books.class);
List< String> filters = new ArrayList< String>();
System.out.println(xmp.asXmlString(books, "UTF-8", filters, true));
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行上面这个类就可以生成开头所看见的那个XML的内容
解析xml
xmap.register(Books.class);
URL url = new File("book.xml").toURL();
InputStream in = new FileInputStream(new File("book.xml"));
Object[] result = (Object[]) xmap.loadAll(in);
Books books=(Books)result[0];
数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)
XML和Java Bean互相转换就此实现。
PS:这里再为大家推荐几款相关在线工具供大家参考:
在线JSON转Java Bean代码工具:
http://tools.jb51.net/code/json2javabean
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
希望本文所述对大家java程序设计有所帮助。
来源:https://www.cnblogs.com/aademeng/articles/6235950.html


猜你喜欢
- 本文以实例详细描述了C#定义并实现单链表的过程及原理。一般来说C#定义并实现单链表,代码包括构成链表的结点定义、用变量来实现表头、清空整个链
- 在JDK的Collection中我们时常会看到类似于这样的话:例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说
- 例子:using System;using System.Collections.Generic;using System.Text;nam
- 1)页面跳转 直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转。 返回带有前缀的字符串:转发:
- 本文实例为大家分享了java商品库存管理平台的具体代码,供大家参考,具体内容如下1.完成超市商品初始化。创建商品,将商品添加到集合2.显示来
- Java是一种强类型, 许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等JDK10 可以使用var作为局部变量类
- 本文实例讲述了Java实现指定线程执行顺序的三种方式。分享给大家供大家参考,具体如下:方法一:通过共享对象锁加上可见变量来实现。public
- 添加方法:选择项目->引用->右击“添加引用”->选择COM 找到上面组件—>点击“确定”。实现代码如下:
- 在res目录下建一个drawable文件夹,注意文件夹名字一定要是drawable,否则在xml模板中你是找不到shape的下图就通过一个x
- Spring Security 过滤器链及自定义Filter别名类名称Namespace Element or AttributeCHANN
- Spring Boot FeignClient 捕获业务异常信息因项目重构采用spring cloud,feign不可避免。目前spring
- 在logback.xml中加上该配置,包名如:com.xxx<logger name="packageName"
- java中javaBean与Bean的深入理解JavaBean 是Java中的一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点
- Java对象为什么需要被序列化序列化能够将对象转为二进制流,对象就可以方便的在网络中被传输和保存。实现序列化的方式实现Serializabl
- 本文实例为大家分享了Java实现在线聊天室的具体代码,供大家参考,具体内容如下- 本文讲述了从实现单个多个客户的收发信息(基础简易版),到各
- c#控件实现类似c++中ocx控件功能c++中ocx控件1、控件方法2、控件事件c#很容易实现c++中ocx中控件方法的功能,但是实现类似c
- 第1部分 HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap
- Android本地存储SharedPreferences详解存储位置SharedPreferences数据保存在: /data /data/
- 问题一次面试遇到的一个问题,其实也是实际开发中很容易遇到的问题,特此记录一下。当请求某个接口的时候,我们会在请求的header中携带toke
- ArrayBlockingQueue有界的阻塞队列,内部是一个数组,有边界的意思是:容量是有限的,必须进行初始化,指定它的容量大小,以先进先