0
我目前正在研究将XMLStreamWriter的一个松散端口写入另一个环境,并尝试获取其名称空间逻辑的句柄。这个类的Oracle's documentation似乎指定禁用名称空间修复,尝试使用已经绑定到某个前缀的名称空间URI编写元素/属性,使用不同的前缀,应该会导致XMLStreamException。但我没有看到这种行为。用下面的代码:XMLStreamWriter缺少异常?
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();
}
我会用"notbob"
前缀相同的命名空间URI已经绑定到"bob"
抛出异常期待两条线。相反,代码正常完成,并tst.xml
包含
<bob:root xmlns:bob="http://www.bob.com" notbob:attr="value">
<notbob:firstinner></notbob:firstinner>
</bob:root>
我误解,或者是这种行为不正确的?
这很有道理 - 所以我们可以考虑Oracle的文档(我修正了上面的链接)是不正确的? –
我会说文档不正确。这并不令我感到意外,因为StAX规格已知质量很差。 –