繁体   English   中英

XPath按属性值选择元素

[英]XPath to select Element by attribute value

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

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

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

接下来,您可以选择“具有特定属性的所有节点”,如下所示:

//*[@id='4']

尝试这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM