如何在Java中使用XPath获取属性值?

我使用XPath解析下面的XML:

  test name1 test name2 test name3  

我想根据我传递的ID从xml文档中获取“名称”,但是我无法获得所需的数据,而是查询返回空白。

 XPathExpression expr = xpath.compile("/schema/element[@id='name_id_2']/name/text()"); 

喜欢这个:

 XPathExpression expr = xpath.compile("/schema/element[@id='name_id_2']/@name"); 

表达式尝试选择name元素中的文本,而不是name属性的值。

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; public class XMLXpathReadder { public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(new FileInputStream(new File("C:\\Test.xml")));// same xml comments as above. XPathFactory xpf = XPathFactory.newInstance(); XPath xpath = xpf.newXPath(); Element userElement = (Element) xpath.evaluate("/schema/element", document, XPathConstants.NODE); System.out.println(userElement.getAttribute("id")); System.out.println(userElement.getAttribute("name")); } } 

以上代码为我工作。

但是如何读取所有元素的值。 我只获得第一个元素节点。

   test name1 test name2 test name3