Java 如何在xstream输出中去掉外部类引用?
我使用xstream将嵌套类的对象封送到xml字符串, 我这样写:Java 如何在xstream输出中去掉外部类引用?,java,xml,xstream,Java,Xml,Xstream,我使用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; } 我用这个代
public static String java2xml(Object obj, Class<?> T) {
XStream xstream = new XStream(new StaxDriver());
xstream.processAnnotations(T);
String xml = xstream.toXML(obj);
return xml;
}
我用这个代码做了一个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:我如何摆脱外部类
部分
问题2:如何使用xstream生成格式良好的xml字符串
在上一篇文章中,我有很多感人的评论,我的问题不清楚,我编辑了我的文章,并列出了我所要求的帮助,谢谢。使用
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();
}
公共静态字符串java2xml(对象obj,类T){
XStream XStream=newxstream(new statxdriver());
processAnnotations(T);
StringWriter StringWriter=新StringWriter();
xstream.marshal(obj,新的PrettyPrintWriter(stringWriter));
返回stringWriter.toString();
}
至于
问题,如果您没有引用Bar
中的任何Foo
类成员,您可以通过将Bar
类定义为static
来摆脱
标记……您没有将Bar添加到foot中Bar
部分是内部类。
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();
}