如何输出单个DOM节点,包括全局命名空间定义

时间:2011-10-24 08:34:05

标签: java xml dom

我有一个DOM-Document,我使用XPath提取某个节点。之后,我想将该节点序列化为XML。我使用以下代码:

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

这适用于一个简单的文档,但请考虑以下文档:

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

在这种情况下,如果我想序列化节点“bar”,那么上面的代码会中断,因为变换器说:

  

前缀'foo'的命名空间尚未声明

如何让变换器将命名空间定义复制到新文档中?

1 个答案:

答案 0 :(得分:2)

DocumentBuilderFactory设置为可识别名称空间。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);