如何使用XPATH从XML获取值

时间:2017-07-12 20:15:29

标签: java xml xpath

这是我的xml,我想获取Id标记的值' 4654'

<Entity>
       <acc>
            <id>4654</id>
            <name>abc</name>
       </acc>
       <acc>
            <id>5465</id>
            <name>xyz</name>
       </acc>

我正在使用此代码来检索Id值

       DocumentBuilderFactory factory =    DocumentBuilderFactory.newInstance();
       DocumentBuilder builder = factory.newDocumentBuilder();
       Document document = builder.parse(new InputSource(new StringReader(xml))); 
       XPath xPath = XPathFactory.newInstance().newXPath();
       NodeList  node = (NodeList) xPath.evaluate("/Entity/acc/id/text()", document, XPathConstants.NODE);
       System.out.println("node length:"+node.getLength());
       System.out.println("node value:"+ node.item(0).getNodeValue());
       return node.item(0).getNodeValue();

输出返回null

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:4)

您需要使用XPathConstants.NODESET代替XPathConstants.NODE

或者您可以将其保留为XPathConstants.NODE并将评估更改为返回Node

Node node = (Node) xPath.evaluate("/Entity/acc/id/text()", document, XPathConstants.NODE);