我们如何使用dom4j获取文本节点

问题描述 投票:0回答:2

当我们解析XML文档时

<entry>
  Sometext
</entry>

使用Javax.xml.Parsers.DocumentBuilder,我们总是可以得到文本节点

Document doc = ...
Node entry = doc.getFirstChild();
Node textNode = entry.item(0);

但是,我想知道如何使用dom4j获取文本节点。似乎dom4j不会将text视为文本节点。

java dom4j textnode
2个回答
0
投票

看看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");

0
投票

鉴于这种:

    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
© www.soinside.com 2019 - 2024. All rights reserved.