我使用xstream将具有嵌套类的对象封送到xml字符串, 我写这个:
public static String java2xml(Object obj, Class<?> T) {
XStream xstream = new XStream(new StaxDriver());
xstream.processAnnotations(T);
String xml = xstream.toXML(obj);
return xml;
}
然而我在输出字符串中得到了<outer-class reference="../.."/>
。
对象类是:
public class Foo {
private String foocontent;
private Bar bar;
// getter and setter
public class Bar {
private String blabla;
// getter and setter
}
}
我使用以下代码制作Foo
:
Foo foo = new Foo();
Bar bar = foo.new Bar();
bar.setBlabla("hello");
foo.setBar(bar);
String fooxml = Xutil.java2xml(foo, Foo.class);
System.out.println(fooxml);
,整个xml是:
<?xml version="1.0" ?>
<me.mypackage.Foo>
<bar>
<blabla>hello</blabla>
<outer-class reference="../.."/>
</bar>
</me.mypackage.Foo>
问题1:如何摆脱outer-class
部分?
问题2:如何用xstream制作格式漂亮的xml字符串?
在上一篇文章中,我有很多情绪化的评论,并且我的问题不清楚,我编辑我的帖子并列出我要求的帮助,谢谢。
答案 0 :(得分:3)
使用PrettyPrintWriter
获取漂亮的格式以及StringWriter
,如下所示:
public static String java2xml(Object obj, Class<?> T) {
XStream xstream = new XStream(new StaxDriver());
xstream.processAnnotations(T);
StringWriter stringWriter = new StringWriter();
xstream.marshal(obj, new PrettyPrintWriter(stringWriter));
return stringWriter.toString();
}
对于<outer-class reference="../.."/>
问题,如果您没有引用Foo
中的任何Bar
班级成员,则可以通过定义{<outer-class>
来删除Bar
标记1}}类为static