目前,我正在通过以下方式将名称空间添加到文档中:

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);

07-24 09:30