【问题标题】:self close tag issue xstream when null为空时自动关闭标签发出 xstream
【发布时间】:2012-07-18 14:37:15
【问题描述】:

我有一个像下面这样的类,我使用 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" />

但是当数据=null时我想低于

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

有人可以帮忙吗?

【问题讨论】:

  • 为什么重要?这两种形式是相同的(事实上,对于大多数 XML 解析技术,您无法知道您正在解析的 XML 中使用了哪种形式,它们都显示为具有两个属性且没有文本内容或子项的元素)。跨度>

标签: java xml xstream


【解决方案1】:

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

<pre></pre>

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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      相关资源
      最近更新 更多