自闭关标签问题xstream为null

时间:2012-07-18 14:37:16

标签: java xml xstream

我有一个如下所示的类,我使用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>

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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