Как вывести один узел DOM, включая определения глобальных пространств имен - PullRequest
2 голосов
/ 24 октября 2011

У меня есть DOM-документ, и я извлекаю определенный узел, используя XPath. После этого я хочу сериализовать этот узел в XML. Я использую следующий код:

TransformerFactory
        .newInstance()
        .newTransformer()
        .transform(new DOMSource(node),
                new StreamResult(getOutputStream()));

Это работает в простом документе, но рассмотрим следующий документ:

<xml xmlns:foo="...">
  <bar foo:bar="xyz" />
</xml>

В этом случае, если я хочу сериализовать «полосу» узла, то приведенный выше код ломается, потому что преобразователь говорит:

Пространство имен для префикса 'foo' не объявлено

Как заставить преобразователь скопировать определения пространства имен в новый документ?

1 Ответ

2 голосов
/ 24 октября 2011

Установите ваш DocumentBuilderFactory, чтобы он знал пространство имен.

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...