如何在java中的NodeList(不在XPath中)上按名称调用特定DOM节点

时间:2014-05-15 06:14:04

标签: java xml dom

这里我在下面提到了我们通常在Dom节点上工作的方式。 我希望找到一种方法来获取特定节点的名称调用,而无需遍历整个列表,因为我对代码进行了评论。

        NodeList                nodeList                = _myDoc.getElementsByTagName("Parent");

        // I want to get child2 node here calling by name without iterating over entire list

        for (int i = 0; i < nodeList.getLength(); i++) {

            Node node = nodeList.item(i);               

            if (node.getLocalName() != null) {

                if (node.getLocalName().equals("child1")) {

                    // get node as child1

                }else if (node.getLocalName().equals("child2")) {

                    // get node as child2

                }etc...
            }

        }

注意:我知道这可以通过XPath完成。但我正在寻找DOM的方法 这里NodeList表示org.w3c.dom.NodeList,Node表示org.w3c.dom.Node。 (Get Node by Name from Nodelist中的答案提供了XPath解决方案)

1 个答案:

答案 0 :(得分:0)

正如MadProgrammer所说,如果您传递节点,可以使用XPath轻松完成。 因此,在我的情况下,我传递了我用于派生NodeList的父节点/文档,如下所示。

 Node node = (Node) XPathFactory.newInstance().newXPath().compile(stringXPathExpression).evaluate(nodeOrDocument, XPathConstants.NODE);

获取字符串:

String  currencyCodeInTotal = XPathFactory.newInstance().newXPath().compile(stringXPathExpression).evaluate(node);

参考: http://viralpatel.net/blogs/java-xml-xpath-tutorial-parse-xml/