|
总结 |
主要如下: |
|
|
要达到的效果 |
使用XStream生成如下格式的XML |
<blogauthor="张三"> <entry> <title>文章1</title> <description>这是文章1</description> </entry> <entry> <title>文章2</title> <description> 这是文章2 </description> </entry> </blog> |
|
需要的Model |
Blog |
publicclass Blog { private Authorwriter; private List<Entry>entries = new ArrayList<>();
public Blog(Author writer) {this.writer = writer;} public Author getWriter() {returnwriter;} publicvoid setWriter(Author writer) {this.writer = writer;} public List<Entry> getEntries() {returnentries;} publicvoid setEntries(List<Entry> entries) {this.entries = entries;}
publicvoid add(Entry entry) {entries.add(entry);} public List<Entry> getContent() {returnentries;} } |
Author.java |
publicclass Author { private Stringname; public Author(String name) {this.name = name;} public String getName() {returnname;} publicvoid setName(String name) {this.name = name;} } |
Entry.java |
publicclass Entry { private Stringtitle; private Stringdescription;
public Entry(String title, String description) { this.title = title; this.description = description; }
public String getTitle() {returntitle;} publicvoid setTitle(String title) {this.title = title;} public String getDescription() {returndescription;} publicvoid setDescription(String description) {this.description = description;} } |
|
简单测试 |
创建Blog类实例,并使用XStream生成XML: |
publicclass XStreamTest { publicstaticvoid main(String[] args) { Blog teamBlog =new Blog(new Author("张三")); teamBlog.add(new Entry("文章1","这是文章1")); teamBlog.add(new Entry("文章2","这是文章2"));
XStream xstream = new XStream(); System.out.println(xstream.toXML(teamBlog)); } } |
生成的格式如下: |
<xstream.Blog> <writer> <name>张三</name> </writer> <entries> <xstream.Entry> <title>文章1</title> <description>这是文章1</description> </xstream.Entry> <xstream.Entry> <title>文章2</title> <description>这是文章2</description> </xstream.Entry> </entries> </xstream.Blog> |
|
类别名 |
改变标签名xstream.Blog为blog、xstream.Entry为entry: |
xstream.alias("blog", Blog.class); xstream.alias("entry", Entry.class); |
结果现在变成了: |
<blog> <writer> <name>张三</name> </writer> <entries> <entry> <title>文章1</title> <description>这是文章1</description> </entry> <entry> <title>文章2</title> <description>这是文章2</description> </entry> </entries> </blog> |
|
字段别名 |
改变标签writer的名字,但这次要使用一个字段的别名: |
xstream.aliasField("author", Blog.class,"writer"); |
现在结果变成了这样: |
<blog> <author> <name>张三</name> </author> <entries> <entry> <title>文章1</title> <description>这是文章1</description> </entry> <entry> <title>文章2</title> <description>这是文章2</description> </entry> </entries> </blog> |
|
隐式集合 |
如果不需要显示 entries标签,可通过addImplicitCollection方法不让其显示: |
xstream.addImplicitCollection(Blog.class,"entries"); |
现在的结果: |
<blog> <author> <name>张三</name> </author> <entry> <title>文章1</title> <description>这是文章1</description> </entry> <entry> <title>文章2</title> <description>这是文章2</description> </entry> </blog> |
|
属性别名 |
将writer 成员变量设置为一个XML 属性。 告诉XStream,其中Blog类的 author字段将做为一个author属性: |
xstream.useAttributeFor(Blog.class,"writer"); |
实现SingleValueConverter: |
publicclass AuthorConverterimplements SingleValueConverter { @Override publicboolean canConvert(Class type) { return type.equals(Author.class); }
@Override public Object fromString(String name) { returnnew Author(name); }
@Override public String toString(Object obj) { return ((Author) obj).getName(); } } |
注册这个转换器:AuthorConverter |
xstream.useAttributeFor(Blog.class,"writer"); xstream.registerConverter(new AuthorConverter()); |
完整代码: |
publicclass XStreamTest { publicstaticvoid main(String[] args) { Blog teamBlog =new Blog(new Author("张三")); teamBlog.add(new Entry("文章1","这是文章1")); teamBlog.add(new Entry("文章2","这是文章2"));
XStream xstream = new XStream(); //类别名 xstream.alias("blog", Blog.class); xstream.alias("entry", Entry.class);
//字段别名 xstream.aliasField("author", Blog.class,"writer");
//隐式集合 xstream.addImplicitCollection(Blog.class,"entries");
//属性别名 xstream.useAttributeFor(Blog.class,"writer"); xstream.registerConverter(new AuthorConverter());
System.out.println(xstream.toXML(teamBlog)); } } |
运行结果: |
<blogauthor="张三"> <entry> <title>文章1</title> <description>这是文章1</description> </entry> <entry> <title>文章2</title> <description>这是文章2</description> </entry> </blog> |
|
属性别名 |
回到前面,在没有使用类别名的情况下所输出的标签名,显示的是全限定类名:xstream.Blog,现在需要将其更换为:cn.itcast.Blog |
publicstaticvoid main(String[] args) { Blog teamBlog =new Blog(new Author("张三")); teamBlog.add(new Entry("文章1","这是文章1")); teamBlog.add(new Entry("文章2","这是文章2"));
XStream xstream = new XStream(); xstream.aliasPackage("cn.itcast","xstream"); System.out.println(xstream.toXML(teamBlog)); } |
结果: |
<cn.itcast.Blog> <writer> <name>张三</name> </writer> <entries> <cn.itcast.Entry> <title>文章1</title> <description>这是文章1</description> </cn.itcast.Entry> <cn.itcast.Entry> <title>文章2</title> <description>这是文章2</description> </cn.itcast.Entry> </entries> </cn.itcast.Blog> |
已使用 广州传智播客 创建。
相关推荐
但是当对象和字段名与XML中的元素名不同时,XStream支持指定别名。XStream支持以方法调用的方式,或是Java 标注的方式指定别名。 XStream在进行数据类型转换时,使用系统缺省的类型转换器。同时,也支持用户自定义...
com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...
最齐全的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及其依赖包,测试ok才发布,欢迎大家下载!最新最全的XStream及其依赖包,测试ok才发布,欢迎大家下载!
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
xstream-1.4.7.jar XML
XStream解析XML实例
XStream DOC
xstream xstream-1.4.5.jar
xstream-1.4.2
xstream所需要的jar包,xstream-1.4.9.jar、dom4j-1.6.1.jar、xpp3_min-1.1.4c.jar等
webService接口对接时,需要传递一个xml内容。用xStream拼接xml
赠送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源码,解决SAE不支持XStream的问题。