【发布时间】:2020-05-19 11:44:30
【问题描述】:
我有某种复杂的 XML 数据结构。该结构包含不同的片段,如下例所示:
<data>
<content-part-1>
<h1>Hello <strong>World</strong>. This is some text.</h1>
<h2>.....</h2>
</content-part1>
....
</data>
标签“content-part-1”中的 h1 标签很有趣。我想获取 xml 标签“h1”的全部内容。
在 java 中,我使用了 javax.xml.parsers.DocumentBuilder 并尝试了类似的方法:
String my_content="<h1>Hello <strong>World</strong>. This is some text.</h1>";
// parse h1 tag..
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = documentBuilder.parse(new InputSource(new StringReader(my_content)));
Node node = doc.importNode(doc.getDocumentElement(), true);
if (node != null && node.getNodeName().equals("h1")) {
return node.getTextContent();
}
但是方法 'getTextContent()' 会返回:
Hello World. This is some text.
xml 解析器删除标签“strong”(因为它是记录在案的行为)。
我的问题是如何在不进一步解析节点内容的情况下提取 org.w3c.dom.Document 中单个 XML 节点的全部内容?
【问题讨论】:
-
这是一个非常不寻常的要求。请编辑问题并解释为什么您认为这是一件有用的事情。
-
我编辑我的问题。我不认为这个要求是如此奇特。但也许 javax.xml.parsers.DocumentBuilder 方法是错误的。使用正则表达式手动解析 XML 片段似乎更容易......
标签: java xml xml-parsing