首页 文章

XPath选择Element by属性值

提问于
浏览
161

我有以下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,不知道问题出在哪里 .

2 回答

  • 235

    试着这样做:

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

    您需要在 [ 之前删除 / . 谓词( [ ] 中的部分)不应该在它们之前有斜杠 . 另外,要选择Employee元素本身,您应该在最后留下 /text() ,否则您只需在Employee元素下选择空白文本值 .

    //Employee[@id='4']
    

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

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

相关问题