如何使用Java中的Document在节点中打印ACTUAL textContent

时间:2017-02-22 19:55:53

标签: java xml

我在xml文档中的所有节点上使用迭代:

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
    .newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document document = docBuilder.parse(new File(path)); //path is path to xml document

NodeList nodeList = document.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++) {
    Node node = nodeList.item(i);
    if (node.getNodeType() == Node.ELEMENT_NODE) {
        // do something with the current element
        System.out.println(node.getNodeName() + ": " + node.getTextContent());
    }
}

来源:Java: Most efficient method to iterate over all elements in a org.w3c.dom.Document?

我想要每个节点的打印文本。

当我致电node.getTextContent()时,它会返回此节点中所有孩子的字符串。

示例:

<chanel>
   <car>opel</car>
   <color>orange</color>
</chanel>

输出

chanel: opel
        orange
car: opel
color: orange

但..项目香奈儿没有文字欧宝和橙色?如何只在实际节点中打印文本?

喜欢这样:

chanel:null 汽车:欧宝 颜色:橙色

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

每个元素

1 =&gt;带孩子们

                 the_node.getChildNodes()

2然后测试Text

类型

3然后getTextContent()

另一个解决方案:使用XPath