Связывание пространств имен в DOM API Java

1

В настоящее время я добавляю пространства имен в документ следующим образом:

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.

Есть ли способ, который работает?

Теги:
dom
xml-namespaces

1 ответ

1
Лучший ответ

Вторая попытка - шаг в правильном направлении. Недопустимая часть (причина исключения) заключалась в том, что вам нужно включить xmlns в атрибут. Поэтому "ns1" недействителен, но "xmlns: ns1" есть.

(Вы можете использовать константу для строки "xmlns" для точек красоты).

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню