gpt4 book ai didi

java - 如何摆脱 xstream 输出中的外部类引用?

转载 作者:行者123 更新时间:2023-11-30 08:23:27 25 4
gpt4 key购买 nike

我使用 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字符串?

在上一篇文章中,我有很多情绪化的评论,使我的问题不清楚,我编辑了我的帖子并列出了我要寻求的帮助,谢谢。

最佳答案

使用 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 的类(class)成员你可以去掉 <outer-class>通过定义 Bar 标记分类为 static

关于java - 如何摆脱 xstream 输出中的外部类引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com