我有以下 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']
接下来,您可以像这样选择“具有特定属性的所有节点”:
//*[@id='4']
尝试这样做:
/Employees/Employee[@id=4]/*/text()
不定期副业成功案例分享
//
选择并搜索文档的 所有 个节点,这可能会很慢。相反,如果文档的结构已知,则使用正确的路径,如下面的 Gilles' answer 中建议的那样。