我有一个DOM-Document,我使用XPath提取某个节点。之后,我想将该节点序列化为XML。我使用以下代码:
TransformerFactory
.newInstance()
.newTransformer()
.transform(new DOMSource(node),
new StreamResult(getOutputStream()));
这适用于一个简单的文档,但请考虑以下文档:
<xml xmlns:foo="...">
<bar foo:bar="xyz" />
</xml>
在这种情况下,如果我想序列化节点“bar”,那么上面的代码会中断,因为变换器说:
前缀'foo'的命名空间尚未声明
如何让变换器将命名空间定义复制到新文档中?
答案 0 :(得分:2)
将DocumentBuilderFactory
设置为可识别名称空间。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);