добавить два пространства имен в один и тот же элемент DOM

1

Мне нужно создать документ dom как это:

<namespace:Facturae xmlns:namespace="URI1" xmlns:namespace2="URI2">
    //<.......
</namespace:Facturae>

Но следующий код вызывает ошибку:

NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

Код:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();     
Document document = builder.newDocument();

Element FacturaeElement = document.createElementNS("URI1", "Facturae");
document.appendChild(FacturaeElement);
FacturaeElement.setPrefix("namespace"); //First namespace OK

FacturaeElement.setAttributeNS("URI2", "xmlns:namespace2", "aaa");   //Generate error
//Rest of code

Как я могу поместить второе пространство имен в элемент?

Теги:
xml-namespaces
xalan
xerces

1 ответ

0

Поиск дополнительной информации Я пришел к решению:

Я использую обычный метод setAtribute (без пространства имен), указывающий имя атрибута с префиксом xmlns так: "xmlns: namespace2".

Затем я создаю подэлемент с этим пространством имен, а затем ставим префикс.

Element FacturaeElement = document.createElementNS("URI1", "Facturae");
document.appendChild(FacturaeElement);
FacturaeElement.setPrefix("namespace"); //First namecpace
FacturaeElement.setAttribute("xmlns:namespace2", "URI2"); //second namespace

//I create the subelement with a namespace
Element FileHeaderElement = document.createElementNS("URI2", "FileHeader");
FacturaeElement.appendChild(FileHeaderElement);
FileHeaderElement.setPrefix("namespace2");

Ещё вопросы

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