在Java的DOM API中绑定名称空间

时间:2014-04-23 15:24:53

标签: java xml dom xml-namespaces

目前我正在通过以下方式向文档添加命名空间:

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.

有办法吗?

1 个答案:

答案 0 :(得分:1)

第二次尝试是迈向正确方向的一步。缺少的部分(异常的原因)是您必须在属性中包含xmlns。所以" ns1"是无效的但是" xmlns:ns1"是

(您可以将常量用于字符串" xmlns"用于美容点)。

node.getOwnerDocument().getDocumentElement().setAttributeNS(
    XMLConstants.XMLNS_ATTRIBUTE_NS_URI,
    XMLConstants.XMLNS_ATTRIBUTE + ":" + prefix,
    namespaceURI);