关于xstream把XML转换java对象问题,求高手解答。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于xstream把XML转换java对象问题,求高手解答。相关的知识,希望对你有一定的参考价值。
<?xml version="1.0" encoding="UTF-8"?>
<KET>
<LoginRsp>
<Code>0</Code>
<Err></Err>
<SessionId></SessionId>
</LoginRsp>
</KET>
这个XML怎么转换成LoginRsp对象?
xStream.aliasType("LoginRsp", LoginRsp.class);
Object o = xStream.fromXML(ClassLoader.getSystemResourceAsStream("xxx.xml"));
System.out.println(o);追问
xstream.aliasType("LoginRsp", LoginRsp.class);
LoginRsp rsp = (LoginRsp)xstream.fromXML(responseData);
LoginRsp类的成员变量我定义好了,responseData是刚才的XML,为啥还报错呢?
哦 知道了 你的XML里面的不要
追问Caused by: com.thoughtworks.xstream.converters.ConversionException: Element LoginRsp of type com.jsict.wqet.adapter.LoginRsp is not defined as field in type com.jsict.wqet.adapter.TestBean
对的,我要从LoginRsp开始解析
现在行了吧
追问不行啊,还是报那个错,大侠,帮人帮到底呀
追答去掉了还是有错? 那你把你LoginRsp类发上来看看
参考技术A 好吧 我不会 但是我觉得首先 你要解析 接着你拼字符串吧。xml-mapping xml 与 java 对象转换映射框架,像 XStream 一样优雅地读写xml
xml
xml 是 java 实现的 xml 框架。
希望以最优雅的方式进行 xml 和 java 之间的转换处理,一行代码搞定一切。
特点
对象的和 xml 的互相映射
支持注解
@Alias
指定别名支持注解
@Ignore
指定忽略的字段
变更日志
快速开始
准备
jdk 1.7+
maven 3.x+
maven 引入
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>xml-mapping</artifactId>
<version>0.0.3</version>
</dependency>
转换为 xml
User user = defaultUser();
String xml = XmlMappingBs.newInstance().toXml(user);
User 参见类 User.java
转换为 java 对象
XML 为对应的 xml 字符串内容。
User user = XmlMappingBs.newInstance().toBean(XML, User.class);
指定别名
注解说明
@Alias
可以放在指定类和字段上,用于指定我们想要的别称信息。
使用案例
- 对象定义
@Alias("user")
public class AliasUser {
@Alias("nickname")
private String name;
private String hobby;
}
- 测试代码
AliasUser user = defaultAliasUser();
String xml = XmlMappingBs.newInstance().toXml(user);
详情参见 XmlMappingBsAliasTest.java
- 生成效果
<?xml version="1.0" encoding="UTF-8"?>
<user>
<nickname>hello</nickname>
<hobby>world</hobby>
</user>
忽略指定字段
说明
有时候我们希望某些字段不参与 xml 的转换,那么可以通过 @Ignore
指定忽略的字段。
使用案例
- 对象定义
public class IgnoreUser {
private String name;
@Ignore
private String hobby;
}
- 测试代码
和原来使用完全相同,详情参见 XmlMappingBsIgnoreTest.java
IgnoreUser user = defaultIgnoreUser();
String xml = XmlMappingBs.newInstance().toXml(user);
结果
<?xml version="1.0" encoding="UTF-8"?>
<IgnoreUser>
<name>hello</name>
</IgnoreUser>
配置框架
以上是关于关于xstream把XML转换java对象问题,求高手解答。的主要内容,如果未能解决你的问题,请参考以下文章
使用XStream是实现XML与Java对象的转换--简介及入门示例