【发布时间】:2019-01-01 21:09:55
【问题描述】:
我们一直在处理这段代码,其中使用 XPATH 导航 XML,我们希望记录在 xpath 中获得的任何内容。在记录时,如果我们遇到一个 XML 元素,那么它会返回为 NULL。因为getNodeValue() 在遇到 XML 元素时返回 null。因此,我们希望将在 XPath 中获得的任何内容序列化为字符串并立即将其打印到日志中。
【问题讨论】:
标签: java dom xpath serialization
我们一直在处理这段代码,其中使用 XPATH 导航 XML,我们希望记录在 xpath 中获得的任何内容。在记录时,如果我们遇到一个 XML 元素,那么它会返回为 NULL。因为getNodeValue() 在遇到 XML 元素时返回 null。因此,我们希望将在 XPath 中获得的任何内容序列化为字符串并立即将其打印到日志中。
【问题讨论】:
标签: java dom xpath serialization
在 Java 世界中,假设 DOM 表示 W3C DOM,您有两个选择,或者创建一个默认的 Transformer https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/Transformer.html 和 TransformerFactory.newInstance(),并使用它来将您的 DOM 节点作为 DOMSource 提供给 @987654331 @ 方法https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/Transformer.html#transform-javax.xml.transform.Source-javax.xml.transform.Result,在StringWriter 上使用正确的结果,如StreamResult,这样您就可以将结果作为字符串。或者使用LSSerializerhttps://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/LSSerializer.html,它有一个方法writeToStringhttps://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/LSSerializer.html#writeToString-org.w3c.dom.Node-。创建LSSerializer 需要您创建https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/ls/DOMImplementationLS.html 或将DOMImplementation 强制转换为DOMImplementationLS。
网上有各种各样的例子,例如Transformer方法见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。
【讨论】: