目前,我正在通过以下方式将名称空间添加到文档中:
node.getOwnerDocument().getDocumentElement()
.setAttribute("xmlns:" + prefix, namespaceURI);
这种方法的问题是...
node.lookupPrefix(namespaceURI);
仍然返回
null
。另一种尝试:
node.getOwnerDocument().getDocumentElement()
.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, prefix, namespaceURI);
最终导致:
org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
有没有可行的方法?
最佳答案
第二次尝试是朝正确方向迈出的一步。缺少的部分(由于异常)是您必须在属性中包括xmlns
。因此,“ ns1”无效,但“ xmlns:ns1”有效。
(您可以为字符串“ xmlns”使用常量作为修饰点)。
node.getOwnerDocument().getDocumentElement().setAttributeNS(
XMLConstants.XMLNS_ATTRIBUTE_NS_URI,
XMLConstants.XMLNS_ATTRIBUTE + ":" + prefix,
namespaceURI);