当我们解析XML文档时
<entry>
Sometext
</entry>
使用Javax.xml.Parsers.DocumentBuilder,我们总是可以得到文本节点
Document doc = ...
Node entry = doc.getFirstChild();
Node textNode = entry.item(0);
但是,我想知道如何使用dom4j获取文本节点。似乎dom4j不会将text
视为文本节点。
看看dom4j.github.io ......它可能是相似的东西:
List<Node> list = document.selectNodes("//entry");
for (Iterator<Node> iter = list.iterator(); iter.hasNext();) {
Attribute attribute = (Attribute) iter.next();
String text = attribute.getValue();
}
替代方案,只选择DOM中的单个节点:
Node node = document.selectSingleNode("//entry");
鉴于这种:
String xml = "<root><entry>one</entry><entry>two</entry></root>";
Document doc = DocumentHelper.parseText(xml);
doc.selectNodes("//entry")
.forEach(n -> System.out.printf("%s -> %s\n", n.getClass().getSimpleName(), n.getStringValue()));
doc.selectNodes("//entry/text()")
.forEach(n -> System.out.printf("%s -> %s\n", n.getClass().getSimpleName(), n.getStringValue()));
第一次selectNodes
电话打印
DefaultElement -> one
DefaultElement -> two
而其他印刷品
DefaultText -> one
DefaultText -> two