XPath查找具有特定值的属性

时间:2010-11-17 21:28:19

标签: xpath

我确信这应该比我做的更容易,但我正试图从我的来源获得以下回复。请问有人可以帮我解决xpath吗?

我正在尝试选择值为“extract”的行元素。在现实世界中,我正在阅读一个文本文件并使用xml并想要选择读取提取的行。

来源

<line>
<line number="1">blah</line>
<line number="2">extract</line>
<line number="3">blah</line>
<line number="4">extract</line>
</line>

必要回复:

<line>
<line number="2">extract</line>
<line number="4">extract</line>
</line>

甚至只是

提取

提取

没关系。

非常感谢,

4 个答案:

答案 0 :(得分:1)

这个(如果您使用XPath 1.0,请使用=):

/line/line[text() eq 'extract']/text()

会给你:(See evaluation

extract
extract

//line不是一个好主意的原因是,您使用line标记用于2件事(您的顶部标记line和您的孩子line) - 你不应该这样做: - /。如果您想要元素而不是文本,可以写:

/line/line[text() eq 'extract']

最后,这会给你计算(看起来这是你真正需要的吗?)

count(/line/line[text() eq 'extract'])

答案 1 :(得分:1)

使用

/*/*[.='extract']/text()

甚至

//text()[.='extract']

答案 2 :(得分:0)

//line[contains(text(), 'extract')]

编辑:这适用于XPath 1.0,它显然会搜索字符串(而不是要求相等)。

答案 3 :(得分:0)

由于您的主题提及属性(即使您的问题没有),我假设您想要找到所有匹配行的number属性的值。如果是这样的话:

/line/line[text()='extract']/@number