有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用XPATH从XML中获取值

这是我的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();

输出返回空值

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    您需要使用XPathConstants.NODESET而不是XPathConstants.NODE

    或者您可以将其保留为XPathConstants.NODE,并将求值更改为返回Node

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