XStream直接使用流的形式读取XML,并且使用现有的XML解析框架,如DOM等,对XML进行解析后,生成JAVA对象。
默认解析器支持对普通对象的解析,如String ,Date,Collections等,如果需要解析特殊的对象,可以对其Converter接口进行扩展。
详细看XStream官方网站http://xstream.codehaus.org/architecture.html。
例子:
public class User {
String name;
String age;
Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
public class Address {
String code;
String street;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
public class XstreamTest {
XStream xstream;
public void test() {
// xstream = new XStream(); // XML转对象时报错 Exception in thread "main" java.lang.IllegalArgumentException: XPP3
// pull parser library not present. Specify another driver. For example: new
// XStream(new DomDriver())
xstream = new XStream(new DomDriver());
xstream.alias("User", User.class);
xstream.alias("Address", Address.class);
}
public void objToXml() {
User user = new User();
user.setName("yaoming");
user.setAge("30");
Address address = new Address();
address.setCode("011101");
address.setStreet("new york");
user.setAddress(address);
System.out.println(xstream.toXML(user));
}
public void xmlToObj() {
StringBuffer buffer = new StringBuffer();
buffer.append("<User>");
buffer.append("<name>Tracy McGrady</name>");
buffer.append("<age>29</age>");
buffer.append("<address>");
buffer.append("<code>011101</code>");
buffer.append("<street>new york</street>");
buffer.append("</address>");
buffer.append("</User>");
User user = (User) xstream.fromXML(buffer.toString());
System.out.println(user.getName());
}
public static void main(String... strings) {
XstreamTest test = new XstreamTest();
test.test();
test.objToXml();
test.xmlToObj();
}
}
以上是最基本的例子;
xstream还有其他实用的方法,如不想展现某Collection类型的tag或者忽略掉它,可以使用addImplicitCollection(),本例子里没有用到Collection对象,就不举例子了。还有其他的用法,可以参考API。
使用Converter接口来实现对非普通对象的解析
public class Child {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
修改方法:
public void objToXml() {
User user = new User();
user.setName("yaoming");
user.setAge("30");
Address address = new Address();
address.setCode("011101");
address.setStreet("new york");
user.setAddress(address);
Child child = new Child();
child.setName("baobao");
user.setChild(child);
xstream.registerConverter(new ChildValueConverter());
System.out.println(xstream.toXML(user));
}
输出:
<User>
<name>yaoming</name>
<age>30</age>
<address>
<code>011101</code>
<street>new york</street>
</address>
<child>baobao</child>
</User>
分享到:
相关推荐
最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
xstream最新版jar包
赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...
xstream-1.4.19.jar
xstream-1.4.20.jar
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar
xstream所需要的jar包,xstream-1.4.9.jar、dom4j-1.6.1.jar、xpp3_min-1.1.4c.jar等
xstream-1.4.2
XStream解析XML实例
com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...
赠送jar包:xstream-1.4.7.jar; 赠送原API文档:xstream-1.4.7-javadoc.jar; 赠送源代码:xstream-1.4.7-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.7.pom; 包含翻译后的API文档:xstream-1.4.7-javadoc-...
XStream DOC
xstream xstream-1.4.5.jar
修改XStream源码,解决SAE不支持XStream的问题。
powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-class...
webService接口对接时,需要传递一个xml内容。用xStream拼接xml