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

时间:2018-03-04 07:53:23

标签: java dom4j textnode

当我们解析像

这样的XML文档时
<entry>
  Sometext
</entry>

使用Javax.xml.Parsers.DocumentBuilder,我们总是可以通过

获取文本节点
Document doc = ...
Node entry = doc.getFirstChild();
Node textNode = entry.item(0);

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

2 个答案:

答案 0 :(得分:0)

请参阅dom4j.github.io ......它可能类似:

if (element > 2) {
    // ...do the ajax stuff here
} else {
   // the input length was shorter than 2 characters...

   // remove all HTML elements here

   $('div#to_be_removed').remove();   //or something like that

}

或者,只选择DOM中的单个节点:

List<Node> list = document.selectNodes("//entry");
for (Iterator<Node> iter = list.iterator(); iter.hasNext();) {
    Attribute attribute = (Attribute) iter.next();
    String text = attribute.getValue();
}

答案 1 :(得分: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