Java XML: как вывести пространство имен дочерних элементов? - PullRequest
3 голосов
/ 10 ноября 2008

Я использую Java Transformer класс для обработки объекта XML-документа.

Это код, который создает Transformer:

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

transformer.transform(source, result);

В настоящее время мой вывод выглядит так: . Я хотел бы, чтобы он включал пространство имен каждого элемента, как в

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 12 ноября 2008

Обратите внимание, что <svg xmlns="SVGNS" /> совпадает с <svg:svg xmlns:svg="SVGNS" />.

Вы проверяли, звонили ли вы setNamespaceAware(true) на вашем DocumentBuilderFactory экземпляре?

0 голосов
/ 29 июня 2009

Я обнаружил, что вам нужно поставить его себе в качестве префикса, даже не использовать пространства имен.

Я использовал, например, el.setAttribute ("xmi: type", type) вместо el.setAttributeNS ("xsi", "type", type); или el.setAttributeNS ("http://www. .... / URI ", "тип", тип); Я обнаружил, что метод NS не делает то, что вы делаете. Кроме того, он по-прежнему будет отображать xmlns = "..." вместо префикса.

0 голосов
/ 10 ноября 2008

Описание пакета для javax.xml.transform имеет раздел Представление квалифицированного имени , которое, по-видимому, подразумевает, что пространство имен можно представить как на входе, так и на выходе.

Мне не совсем понятно, как будет выглядеть результат, кроме того, что будет включен URI пространства имен.

Дайте ему попытку - надеюсь, у кого-то еще будет более конкретный опыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...