XPath按属性值选择元素

我有以下XML

<?xml version=“1.0”encoding=“UTF-8”?>
<员工>
<员工id=“3”>
<年龄>40&lt/年龄>
<名称>汤姆&lt/名称>
<性别>男&lt/性别>
<角色>经理&lt/角色>
&lt/员工>
<员工id=“4”>
<年龄>25&lt/年龄>
<名称>梅希纳&lt/名称>
<性别>女性&lt/性别>
<角色>经理&lt/角色>
&lt/员工>
&lt/员工>

我想选择id为“4”的Employee元素

我使用下面的XPath表达式,它不返回任何内容

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

我在http://chris.photobooks.com/xml/default.htm 它说xpath无效,不确定问题出在哪里

您需要删除[]谓词之前的/。谓词(在[]中的部分)前面不应该紧跟斜杠。此外,要选择Employee元素本身,您应该去掉/text()在末尾或其他地方,您只需选择Employee元素下的空白文本值即可

//员工[@id='4']

编辑:正如Jens在评论中指出的那样,/可能会非常慢,因为它会在整个文档中搜索匹配的节点。如果要处理的文档结构保持一致,最好使用完整路径,例如:

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

发表评论