0

我有一个像下面这样的类,我使用 xSteam 将 Edge 转换为 xml。

@XStreamAlias("edge")
class Edge{

     @XStreamAsAttribute
     @XStreamAlias("source")
     private String source;

     @XStreamAsAttribute
     @XStreamAlias("target")
     private String target;

     @XStreamAlias("data")
     private Data data;
     .....
}

当我设置 data=null 时,我可以得到

  <edge source="8" target="10" />

但是当 data =null 时我想低于

  <edge source="8" target="10" ></edge>

有人可以为此提供帮助吗?

4

2 回答 2

2

您可以使用 Dom4JDriver 驱动程序。在这种情况下,您可以像以下代码一样格式化您的 xml 输出:

OutputFormat outPutFormat = new OutputFormat();
outPutFormat.setLineSeparator("");
outPutFormat.setExpandEmptyElements(true);
outPutFormat.setEncoding("UTF-8");

Dom4JDriver d4j = new Dom4JDriver(new XmlFriendlyNameCoder("_", "_"));
d4j.setOutputFormat(outPutFormat);
XStream xstream = new XStream(d4j);
xstream.autodetectAnnotations(true);

于 2014-10-02T15:08:50.187 回答
0

在 XML 级别上您无能为力,因为在该级别上,两种形式完全相同。如果您确实需要一种形式而不是另一种形式,则必须提供自己的 XML 序列化程序,或者使用默认序列化程序并对其输出流进行后处理。在不知道您当前如何序列化数据的情况下,我无法为您提供更多详细信息。

于 2012-07-18T16:06:18.617 回答