В настоящее время я добавляю пространства имен в документ следующим образом:
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);