dom4j xml转java对象_dom4j+反射实现bean与xml的相互转换

本文介绍了如何结合dom4j和反射机制在Java中实现XML文档与Java对象之间的转换。详细讲解了反射的原理、dom4j的使用,以及提供了一个读取XML文档的示例。同时,给出了一个工具类,演示了如何将XML转换为Java对象,以及Java对象转换为XML的过程,涉及到了递归调用和字段的set/get方法。
摘要由CSDN通过智能技术生成

由于目前在工作中一直用的dom4j+反射实现bean与xml的相互转换,记录一下,如果有不正确的地方欢迎大家指正~~~

一、反射机制

在此工具类中使用到了反射技术,所以提前也看了一些知识点,例如:http://www.51gjie.com/java/82(这里面有大量的例子可以学习)

二、dom4j

dom4j会将整个xml加载至内存,并解析成一个document对象,但是可能会造成内存溢出现象。

Document:表示整个xml文档。文档Document对象是通常被称为DOM树。

Element:表示一个xml元素。Element对象有方法来操作其子元素,它的文本,属性和名称空间

Attribute:表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。

Node:代表元素,属性或者处理指令。

三、dom4j读取xml

读取xml文档主要依赖于org.dom4j.io包,翻看其中源码可以看出提供DOMReader、SaxReader、XPPReader、XPP3Reader,我这里主要查看了SaxReader源码,其他的没有深入看过,所以使用SaxReader。

/*** 将xml字符串转换为Document对象

*@paramxml

*@return

*/

publicDocument getDocumentByString(String xml)

{//1.字符串输入流

StringReader stringReader = newStringReader(xml);//2.获取解析器

SAXReader saxReader = newSAXReader();//3.声明document对象

Document document = null;try{//4.解析xml,生成document对象

document =saxReader.read(stringReader);

}catch(DocumentException e)

{

log.error("xml解析失败",e);

}returndocument;

}

四、bean与xml的互转方法

我这里测试案例,查询学生学校信息,返回学校及多个学生信息。如下准备:

1.准备bean

请求实体bean:ReqSchool.java

public classReqSchool {//学校编号

privateString number;//学校名称

privateString name;//学校省份

privateString province;//学校地址

privateString address;//学生班级

privateString stuclass;//学生姓名

privateString stuname;//学生分数

privateString stuscore;//省略set和get方法

}

响应实体bean:RspSchool.java

public classRspSchool {//学校编号

privateString number;//学校名称

privateString name;//学校省份

privateString province;//学校地址

privateString address;//多个学生

private Liststudents;  //模拟测试数据,返回多个学生//省略get和set方法

响应实体bean的泛型:RspStudent.java

public classRspStudent {//学生班级

privateString stuclass;//学生姓名

privateString stuname;//学生分数

privateString stuscore;//省略set和get方法

}

2.准备xml

①请求模版requestXML

这里以${元素名}作为请求模版,也可以修改工具类进行改造

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值