0

我对 XML 和 StaX 还很陌生。我需要使用 StaX 生成以下 XML 命名空间:

<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="urn:blah blah"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:blah blah.xsd">
     <other tags go here.../>
</a>

我尝试了很多方法,包括使用命名空间和 QName 对象以及 eventFactory.createStartElement,但我无法让“xsi:schemaLocation”行工作。

到目前为止我所拥有的是...

    ArrayList<Namespace> nameSpaces = new ArrayList<>();

    Namespace nameSpace2 = eventFactory.createNamespace("xsi",
            "http://www.w3.org/2001/XMLSchema-instance");
    Namespace nameSpace3 = eventFactory.createNamespace("xsi:schemaLocation",
            "urn:blah.xsd");
    Namespace nameSpace1 = eventFactory.createNamespace("urn:blah");

    nameSpaces.add(nameSpace1);
    nameSpaces.add(nameSpace2);
    nameSpaces.add(nameSpace3);

    StartElement startElement = eventFactory.createStartElement(new QName(
            "a"), nameSpaces.iterator(), null);

    eventWriter.add(startElement);
    eventWriter.add(eventFactory.createDTD("\n"));

任何帮助将非常感激...

谢谢

拉斯

4

1 回答 1

0
xsi:schemaLocation="urn:blah blah.xsd"

不是命名空间声明,它是"xsi"命名空间中的一个属性。

于 2013-07-22T20:14:52.693 回答