首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选择包含"foo“的属性的正确XPath是什么?

选择包含"foo“的属性的正确XPath是什么?
EN

Stack Overflow用户
提问于 2008-09-19 16:11:06
回答 9查看 200K关注 0票数 199

给定此XML,XPath将返回其prop属性包含Foo (前三个节点)的所有元素:

代码语言:javascript
复制
<bla>
 <a prop="Foo1"/>
 <a prop="Foo2"/>
 <a prop="3Foo"/>
 <a prop="Bar"/>
</bla>
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-19 16:23:03

代码语言:javascript
复制
//a[contains(@prop,'Foo')]

如果我使用这个XML来返回结果,那么它就会起作用。

代码语言:javascript
复制
<bla>
 <a prop="Foo1">a</a>
 <a prop="Foo2">b</a>
 <a prop="3Foo">c</a>
 <a prop="Bar">a</a>
</bla>

编辑:另一件需要注意的事情是,虽然上面的XPath将返回该特定xml的正确答案,但如果您希望保证只获取元素"bla“中的"a”元素,则应该像其他人提到的那样使用

代码语言:javascript
复制
/bla/a[contains(@prop,'Foo')]

这将搜索整个xml文档中的所有"a“元素,而不管它们是否嵌套在"blah”元素中

代码语言:javascript
复制
//a[contains(@prop,'Foo')]  

我添加这个是为了彻底和stackoverflow的精神。:)

票数 349
EN

Stack Overflow用户

发布于 2010-02-26 03:33:30

此XPath将为您提供属性包含'Foo‘的所有节点,而不考虑节点名称或属性名称:

代码语言:javascript
复制
//attribute::*[contains(., 'Foo')]/..

当然,如果您更感兴趣的是属性本身的内容,而不一定是它们的父节点,那么只需删除/。

代码语言:javascript
复制
//attribute::*[contains(., 'Foo')]
票数 30
EN

Stack Overflow用户

发布于 2008-09-19 16:28:15

代码语言:javascript
复制
descendant-or-self::*[contains(@prop,'Foo')]

或者:

代码语言:javascript
复制
/bla/a[contains(@prop,'Foo')]

或者:

代码语言:javascript
复制
/bla/a[position() <= 3]

解剖:

代码语言:javascript
复制
descendant-or-self::

Axis -搜索下面的每个节点和节点本身。这样说通常比//更好。我遇到过一些实现,其中//表示任何地方(根节点的子节点或自身)。另一个使用默认轴。

代码语言:javascript
复制
* or /bla/a

标记-a通配符匹配,/bla/a是绝对路径。

代码语言:javascript
复制
[contains(@prop,'Foo')] or [position() <= 3]

里面的条件。@prop是attribute::prop的缩写,因为attribute是另一个搜索轴。或者,您可以使用position()函数选择前3个。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/103325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档