XPATH如何从同一个父对象中选择两个特定的孩子

时间:2018-12-25 22:30:10

标签: xpath

晚安,朋友!

让我们假设我们有一个包含30个这样的项目的xml,而我想从一个名称中包含单词Richard的项目中仅获取名称 url

<channel>
    <item>
      <name>Brian</name>
      <lastname>Connor</lastname>
      <age>40</age>
      <enclosure url="http://www.brian.com"/>
    </item>
    <item>
      <name>Richard</name>
      <lastname>Wendell</lastname>
      <age>38</age>
      <enclosure url="http://www.richard.com"/>
    </item>
</channel>

如何使用XPath做到这一点? 我试过了: "//channel/item[name[contains(text(),'Richard')]]",但只返回名称,我不知道如何一起选择网址信息。

请原谅我的英语!

1 个答案:

答案 0 :(得分:3)

您的方法不起作用,因为您正在选择XML树的子树(在这种情况下为item),该子树包含比您想要的更多的信息。如果您只想要一个xpath表达式中的属性的子集,则必须分别选择它们,然后将它们适当地连接起来,例如

concat('name=', //channel/item[contains(name, 'Richard')]/name, ' url=', //channel/item[contains(name, 'Richard')]/enclosure/@url)

该示例将使您轻松更改其他格式。

顺便说一句:您的XML输入格式错误。我纠正了。