10

我没有看到其中的选项javax.xml.stream.XMLEventWriterjavax.xml.stream.XMLOutputFactory以某种方式设置任何一个以便写入空元素(而不是显式的开始和结束元素对)。

我看到 Woodstox 有一个属性可以做到这一点,但它不是标准化的。

我是否缺少任何明显的方法来做到这一点?

4

5 回答 5

7
writer.writeEmptyElement("some_element");
writer.writeAttribute("some_attribute", "some_value");
于 2013-03-20T14:44:39.893 回答
4

<x/>设置属性以便像使用 WoodStox API一样生成空标签:

WstxOutputFactory factory = new WstxOutputFactory();
factory.setProperty(WstxOutputFactory.P_AUTOMATIC_EMPTY_ELEMENTS, true);

我想要在 XML 标记中缩进。setIndentation 方法既不适用于 javax.xml.stream.XMLOutputFactory 也不适用于 org.codehaus.stax2.XMLOutputFactory2

于 2010-07-14T16:15:42.550 回答
3

不,and之间没有语义差异<x/><x></x>标准 API 不提供请求其中一个的方法。

于 2010-06-29T15:59:07.933 回答
3

在一些答案和评论中存在一些混淆。

StAX 有两个 API:

  • XMLStreamReader使用and的“游标 API” XMLStreamWriter;和
  • XMLEventReader使用and的“迭代器 API” XMLEventWriter

使用Cursor API可以使用以下命令输出带有单个标记的空<example/>元素:XMLStreamWriter

xmlStreamWriter.writeEmptyElement("example");

据我所知,使用Iterator API输出带有单个标记的空元素<example/>不可能的。在这种情况下,您将无法生成带有两个标签的空元素:XMLEventWriter<example></example>

xmlEventWriter.add(xmlEventFactory.createStartElement("", null, "example"));
xmlEventWriter.add(xmlEventFactory.createEndElement("", null, "example"));
于 2015-04-21T14:23:41.850 回答
2

您可能已经知道这一点,但是 XMLStreamWriter 确实有方法可以指定它应该是“真正的”空元素。XMLEventWriter 缺少一些较低级别接口所具有的部分。

于 2010-07-10T16:05:41.960 回答