“串行化DOM节点”是什么意思?

时间:2018-07-25 06:35:17

标签: java dom xpath serialization

我们一直在研究这段代码,其中正在使用XPATH导航XML,并且我们希望记录在xpath上获得的所有内容。在记录日志时,如果遇到XML元素,则该元素将返回NULL。由于getNodeValue()在遇到XML元素的情况下返回null。因此,我们想将XPath上获得的任何内容序列化为String并立即在日志中打印出来。

1 个答案:

答案 0 :(得分:1)

在Java世界中,假设DOM代表W3C DOM,您有两种选择,要么使用Transformer创建默认的TransformerFactory.newInstance() https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/Transformer.html,然后使用它来将您的DOM节点作为{ {1}}到DOMSource方法https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/Transformer.html#transform-javax.xml.transform.Source-javax.xml.transform.Result上,并在transform上使用适当的结果,例如StreamResult,这样您就可以将结果作为字符串。或者使用具有方法StringWriter https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/LSSerializer.htmlLSSerializer https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/LSSerializer.html#writeToString-org.w3c.dom.Node-。创建writeToString要求您创建https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/DOMImplementationLS.html或将DOMImplementation强制转换为DOMImplementationLS。

在线上有各种示例,例如,对于LSSerializer方法,请参见https://docs.oracle.com/javase/tutorial/jaxp/xslt/writingDom.html;对于LSSerializer,请参见http://www.java2s.com/Tutorials/Java/XML/DOM/Output_XML_DOM_tree_with_LSSerializer_in_Java.htm