晚安,朋友!
让我们假设我们有一个包含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')]]"
,但只返回名称,我不知道如何一起选择网址信息。
请原谅我的英语!
答案 0 :(得分:3)
您的方法不起作用,因为您正在选择XML树的子树(在这种情况下为item
),该子树包含比您想要的更多的信息。如果您只想要一个xpath表达式中的属性的子集,则必须分别选择它们,然后将它们适当地连接起来,例如
concat('name=', //channel/item[contains(name, 'Richard')]/name, ' url=', //channel/item[contains(name, 'Richard')]/enclosure/@url)
该示例将使您轻松更改其他格式。
顺便说一句:您的XML输入格式错误。我纠正了。