Java 如何在xstream输出中去掉外部类引用?

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; } 我用这个代

我使用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;
}   
我用这个代码做了一个
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();
}