XPath通过属性值selectElement

我有以下的XML。

<?xml version="1.0" encoding="UTF-8"?> <Employees> <Employee id="3"> <age>40</age> <name>Tom</name> <gender>Male</gender> <role>Manager</role> </Employee> <Employee id="4"> <age>25</age> <name>Meghna</name> <gender>Female</gender> <role>Manager</role> </Employee> </Employees> 

我想selectid =“4”的Employee元素。

我正在使用下面的XPathexpression式不返回任何东西。

 //Employee/[@id='4']/text() 

我检查http://chris.photobooks.com/xml/default.htm ,它说无效的xpath,不知道问题在哪里。

您需要删除/之前的[ 。 谓词( [ ]的部分)在它们之前不应该有斜杠。 另外,要selectEmployee元素本身,您应该在最后忽略/text() ,否则您只需在Employee元素下面立即select空白文本值。

 //Employee[@id='4'] 

编辑:正如Jens在评论中指出的那样, //可能会很慢,因为它会在整个文档中search匹配的节点。 如果您正在使用的文档的结构将保持一致,那么最好使用完整path,例如:

 /Employees/Employee[@id='4'] 

尝试这样做:

 /Employees/Employee[@id=4]/*/text()