代码之家  ›  专栏  ›  技术社区  ›  Laird Nelson

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

  •  10
  • Laird Nelson  · 技术社区  · 16 年前

    我看不出里面有什么选择 javax.xml.stream.XMLEventWriter javax.xml.stream.XMLOutputFactory 以某种方式设置,以便写入空元素(而不是显式的开始元素对和结束元素对)。

    我看到伍德斯托克斯有这样的特性,但它并不标准。

    我是否遗漏了任何明显的方法?

    5 回复  |  直到 11 年前
        1
  •  4
  •   Jim Garrison    16 年前

    不,两者之间没有语义差异 <x/> <x></x> 而且,标准API不提供一种方法来请求其中一个或另一个。

        2
  •  5
  •   user1675631    13 年前
    writer.writeEmptyElement("some_element");
    writer.writeAttribute("some_attribute", "some_value");
    
        3
  •  3
  •   thequark    16 年前

    设置属性以便生成空标记 <x/> 使用Woodstox API:

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

    我希望在XML标记中有缩进。setindentation方法既不使用javax.xml.stream.xmloputfactory,也不使用org.codehaus.stax2.xmloputfactory2。

        4
  •  2
  •   ziesemer    13 年前

    您可能已经知道这一点,但是xmlstreamwriter确实有一个方法来指定它应该是“real”空元素。XMLEventWriter缺少较低级别接口所具有的一些片段。

        5
  •  2
  •   John Bentley    11 年前

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

    Stax有两个API:

    • “光标API”使用 XMLStreamReader XMLStreamWriter
    • “迭代器API”使用 XMLEventReader XMLEventWriter ;

    输出带有单个标记的空元素, <example/> , 可能与 光标API 使用 XMLWRAW写入器 :

    xmlStreamWriter.writeEmptyElement("example");
    

    输出带有单个标记的空元素, <范例/gt; , 不是 可能与 迭代器API 使用 西文作家 据我所知。在这种情况下,您将无法生成带有两个标记的空元素。 <example></example> :

    xmlEventWriter.add(xmlEventFactory.createStartElement("", null, "example"));
    xmlEventWriter.add(xmlEventFactory.createEndElement("", null, "example"));
    
    推荐文章