XMLStreamWriter 缺少异常?
XMLStreamWriter missing exceptions?
我目前正在研究将 XMLStreamWriter 的一个松散端口写入另一个环境,并试图处理它的名称空间逻辑。 Oracle's documentation 对于这个 class 似乎指定禁用命名空间修复,尝试使用已经绑定到某个前缀的命名空间 URI 编写 element/attribute,使用 不同的 前缀,应该会导致 XMLStreamException。但我没有看到这种行为。使用以下代码:
public void run() throws Exception {
String BOB = "http://www.bob.com/"
XMLOutputFactory fac = XMLOutputFactory.newInstance();
fac.setProperty("javax.xml.stream.isRepairingNamespaces", false); // default
XMLStreamWriter writer = fac.createXMLStreamWriter(new FileWriter("tst.xml"));
writer.writeStartElement("bob", "root", BOB);
writer.setPrefix("bob", BOB);
writer.writeNamespace("bob", BOB);
writer.writeAttribute("notbob", BOB, "attr", "value"); // Should fail?
writer.writeStartElement("notbob", "firstinner", BOB); // Should fail?
writer.writeEndElement();
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
}
我希望对已绑定到 "bob"
的同一名称空间 URI 使用 "notbob"
前缀的两行都将抛出异常。相反,代码正常完成,并且 tst.xml
包含
<bob:root xmlns:bob="http://www.bob.com" notbob:attr="value">
<notbob:firstinner></notbob:firstinner>
</bob:root>
是我误会了,还是这种行为不正确?
attempting to write an element/attribute using a namespace URI already bound to some prefix, using a different prefix, should cause an XMLStreamException.
XML 允许将多个不同的前缀绑定到同一个名称空间 URI。因此在那种情况下抛出 XMLStreamException
将违反 XML 规范。
我目前正在研究将 XMLStreamWriter 的一个松散端口写入另一个环境,并试图处理它的名称空间逻辑。 Oracle's documentation 对于这个 class 似乎指定禁用命名空间修复,尝试使用已经绑定到某个前缀的命名空间 URI 编写 element/attribute,使用 不同的 前缀,应该会导致 XMLStreamException。但我没有看到这种行为。使用以下代码:
public void run() throws Exception {
String BOB = "http://www.bob.com/"
XMLOutputFactory fac = XMLOutputFactory.newInstance();
fac.setProperty("javax.xml.stream.isRepairingNamespaces", false); // default
XMLStreamWriter writer = fac.createXMLStreamWriter(new FileWriter("tst.xml"));
writer.writeStartElement("bob", "root", BOB);
writer.setPrefix("bob", BOB);
writer.writeNamespace("bob", BOB);
writer.writeAttribute("notbob", BOB, "attr", "value"); // Should fail?
writer.writeStartElement("notbob", "firstinner", BOB); // Should fail?
writer.writeEndElement();
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
}
我希望对已绑定到 "bob"
的同一名称空间 URI 使用 "notbob"
前缀的两行都将抛出异常。相反,代码正常完成,并且 tst.xml
包含
<bob:root xmlns:bob="http://www.bob.com" notbob:attr="value">
<notbob:firstinner></notbob:firstinner>
</bob:root>
是我误会了,还是这种行为不正确?
attempting to write an element/attribute using a namespace URI already bound to some prefix, using a different prefix, should cause an XMLStreamException.
XML 允许将多个不同的前缀绑定到同一个名称空间 URI。因此在那种情况下抛出 XMLStreamException
将违反 XML 规范。