我确信这应该比我做的更容易,但我正试图从我的来源获得以下回复。请问有人可以帮我解决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>
甚至只是
提取
提取
没关系。
非常感谢,
答案 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