不需要@XmlRootElement如何使用JAXB解组javabean
2015-10-22 22:06
477 查看
很多资料说,使用JAXB将XML转换为javabean时必须在javabean上增加@XmlRootElement注解,现在找到了一种不需要增加注解的方式,代码如下:
假如XML格式如:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:Person xsi:schemaLocation="s" xsi:noNamespaceSchemaLocation="w"
xmlns:ns3="http://ws.test.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<datasetCode>111</datasetCode>
<infoContent>222</infoContent>
<messageType>INF</messageType>
</ns3:Person>,
则解组代码如:
JAXBContext jc = JAXBContext.newInstance(ExchangeNotice.class);
Unmarshaller u = jc.createUnmarshaller();
StringReader reader = new StringReader(xml); //这里的xml是上边的xml字符串
XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
XMLStreamReader reader2 = xmlFactory.createXMLStreamReader(reader);
JAXBElement userElement = u.unmarshal(reader2, ExchangeNotice.class); //这里是关键,需要传入目标对象
Object result = userElement.getValue(); //这里的result实际上就是ExchangeNotice的对象,可以直接强转。
没有什么技术含量,只是网上资料太少,这里总结下。
假如XML格式如:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:Person xsi:schemaLocation="s" xsi:noNamespaceSchemaLocation="w"
xmlns:ns3="http://ws.test.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<datasetCode>111</datasetCode>
<infoContent>222</infoContent>
<messageType>INF</messageType>
</ns3:Person>,
则解组代码如:
JAXBContext jc = JAXBContext.newInstance(ExchangeNotice.class);
Unmarshaller u = jc.createUnmarshaller();
StringReader reader = new StringReader(xml); //这里的xml是上边的xml字符串
XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
XMLStreamReader reader2 = xmlFactory.createXMLStreamReader(reader);
JAXBElement userElement = u.unmarshal(reader2, ExchangeNotice.class); //这里是关键,需要传入目标对象
Object result = userElement.getValue(); //这里的result实际上就是ExchangeNotice的对象,可以直接强转。
没有什么技术含量,只是网上资料太少,这里总结下。
相关文章推荐
- Spring中JdbcTemplate 和DataSource的联系
- 使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
- Ubuntu 12.04安装java7
- java原型模式详解
- jeecms 报错 java.text.ParseException: Unparseable date
- Java访问权限修饰词private、public、protected、default、default(缺省)
- Java设计模式——UML语言概述
- java线程池的作用
- 二叉搜索树的中序 前序 后序遍历JAVA实现
- java 建造者模式详解
- Eclipse快捷键大全
- Java学习笔记(六)——方法
- 接口和抽象类的区别—Java
- eclipse最实用快捷键
- Java语言基础(一)
- Java学习笔记(五)——数组
- spring4+strust2+hibernate4 环境开发搭建
- 浅谈Struts2拦截器的原理与实现
- java里类方法和实例方法区别
- Java:Java中Overriding and Hiding Methods