如何输出包含全局命名空间定义的单个 DOM 节点
我有一个 DOM 文档,我使用 XPath 提取某个节点。之后我想将该节点序列化为 XML。我正在使用以下代码:
TransformerFactory
.newInstance()
.newTransformer()
.transform(new DOMSource(node),
new StreamResult(getOutputStream()));
这在一个简单的文档中工作,但请考虑以下文档:
<xml xmlns:foo="...">
<bar foo:bar="xyz" />
</xml>
在这种情况下,如果我想序列化节点“bar”,那么上面的代码就会中断,因为变压器说:
前缀“foo”的命名空间尚未声明
如何让转换器将命名空间定义复制到新文档中?
I have a DOM-Document and I extract a certain node using XPath. After that I want to serialize that node to XML. I am using the following code:
TransformerFactory
.newInstance()
.newTransformer()
.transform(new DOMSource(node),
new StreamResult(getOutputStream()));
This works in a simple document, but consider the following document:
<xml xmlns:foo="...">
<bar foo:bar="xyz" />
</xml>
In this case if I want to serialize the node "bar", then the code above breaks, because the transformer says:
Namespace for prefix 'foo' has not been declared
How can I get the transformer to copy the namespace definitions into the new document?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将您的
DocumentBuilderFactory
设置为命名空间感知。Set your
DocumentBuilderFactory
to be namespace aware.