我有以下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>

我想选择id="4"的Employee元素。

我使用下面的XPath表达式,它不返回任何东西。

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

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


您需要删除[之前的/。谓词([..]中的部分)前面不应该有斜杠——它们直接出现在与其关联的节点选择器之后。

另外,要选择Employee元素本身,应该在末尾去掉/text()。否则,您只需立即在Employee元素下选择空白文本值。

//Employee[@id = '4']

还有一点需要注意://可能非常慢,因为它在整个文档中搜索匹配的节点。如果你正在处理的文档的结构是一致的,你可能最好使用一个更显式的路径,例如:

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

试着这样做:

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

接下来,你可以像这样选择“所有具有特定属性的节点”:

//*[@id='4']