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

XMLEventWriter从头开始:如何发出xmlns属性?

  •  2
  • Laird Nelson  · 技术社区  · 15 年前

    我正在尝试使用staxapi中的XMLEventWriter从头开始编写XML文档。

    我不知道如何获取要发出的默认名称空间属性。

    例如,默认名称空间URI字符串为“ http://www.liquibase.org/xml/ns/dbchangelog/1.9

    这里有什么神奇的配方?XMLEventWriter.setDefaultNamespace()无法工作。

    谢谢, 莱尔德

    2 回复  |  直到 10 年前
        1
  •  3
  •   McDowell rahul gupta    15 年前

    使用属性 IS_REPAIRING_NAMESPACES

    XMLEventFactory events = XMLEventFactory.newInstance();
    QName bar = new QName("urn:bar", "bar");
    XMLOutputFactory factory = XMLOutputFactory.newInstance();
    factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
    XMLEventWriter writer = factory.createXMLEventWriter(System.out);
    writer.add(events.createStartDocument());
    writer.setDefaultNamespace("urn:bar");
    writer.add(events.createStartElement(bar, null, null));
    writer.add(events.createEndDocument());
    writer.flush();
    

    以上代码发出:

    <?xml version="1.0"?><bar xmlns="urn:bar"></bar>
    
        2
  •  -1
  •   Martín Schonaker    15 年前

    使用“write*”而不是“set*”

    javax.xml.stream.XMLStreamWriter.writeDefaultNamespace(String)