XMLEventWriter:我如何告诉它写入空元素?

发布于 2024-09-07 16:42:40 字数 214 浏览 2 评论 0原文

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

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

我是否错过了任何明显的方法来做到这一点?

I do not see an option within javax.xml.stream.XMLEventWriter or javax.xml.stream.XMLOutputFactory to set either up in a way so that empty elements are written (instead of explicit start and end element pairs).

I see that Woodstox has a property to do this, but it is not standardized.

Am I missing any obvious way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

人│生佛魔见 2024-09-14 16:42:51

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

You probably know this already, but XMLStreamWriter does have method for specifying that it should be "real" empty element. XMLEventWriter is missing a few pieces that lower level interface has.

匿名。 2024-09-14 16:42:50

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

StAX 有两个 API:

  • 使用 XMLStreamReaderXMLStreamWriter 的“Cursor API”;以及
  • 使用 XMLEventReaderXMLEventWriter 的“Iterator API”;

使用 XMLStreamWriterCursor API 可以输出带有单个标记 的空元素code>:

xmlStreamWriter.writeEmptyElement("example");

使用单个标签 输出空元素,不可能使用Iterator API使用 XMLEventWriter,据我所知。在这种情况下,您只能生成一个带有两个标签 的空元素:

xmlEventWriter.add(xmlEventFactory.createStartElement("", null, "example"));
xmlEventWriter.add(xmlEventFactory.createEndElement("", null, "example"));

In several of the answers and comments there is some confusion.

StAX has two APIs:

  • The "Cursor API" using XMLStreamReader and XMLStreamWriter; and
  • The "Iterator API" using XMLEventReader andXMLEventWriter;

Outputting an empty element with a single tag, <example/>, is possible with the Cursor API usingXMLStreamWriter:

xmlStreamWriter.writeEmptyElement("example");

Outputting an empty element with a single tag, <example/>, is not possible with the Iterator API using XMLEventWriter, as far as I know. In this case you're stuck with producing an empty element with two tags <example></example>:

xmlEventWriter.add(xmlEventFactory.createStartElement("", null, "example"));
xmlEventWriter.add(xmlEventFactory.createEndElement("", null, "example"));
那些过往 2024-09-14 16:42:48

否。 之间没有语义差异,并且标准 API 不提供请求方法或其他。

No. There is no semantic difference between <x/> and <x></x> and the standard APIs do not provide a way to request one or the other.

遗失的美好 2024-09-14 16:42:47

设置属性以便生成空标签,如 与 WoodStox API 配合使用:

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

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

Setting property so that empty tags are generated like <x/> works with WoodStox APIs:

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

I wanted indentation in XML tags. the setIndentation method is working with neither javax.xml.stream.XMLOutputFactory nor org.codehaus.stax2.XMLOutputFactory2

半山落雨半山空 2024-09-14 16:42:46
writer.writeEmptyElement("some_element");
writer.writeAttribute("some_attribute", "some_value");
writer.writeEmptyElement("some_element");
writer.writeAttribute("some_attribute", "some_value");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文