2013-02-28 79 views
2

例如,如何通过xpath在baz文本之后选择strong标签?xpath:在文本之后采摘标签

<p> 
<br>foo<strong>this foo</strong> 

<br>bar<strong>this bar</strong> 

<br>baz<strong>this baz</strong> 

<br>qux<strong>this qux</strong></p> 

显然以下不起作用....

//p[text() = 'baz']/following-sibling::select[1] 

回答

3

这里试试这个

//p/text()[. = 'baz']/following-sibling::strong[1] 

演示 - http://www.xpathtester.com/obj/b67bad4d-4d38-4e2d-a3df-b7e5a2e9f286

该解决方案依赖于周围的文字没有空格节点。您将需要切换到使用下面的,如果你开始使用缩进或其他空白字符

//p/text()[normalize-space(.) = 'baz']/following-sibling::strong[1] 
+0

感谢菲尔!......用在另一个例子正规化空间的方法,但似乎并没有服用。 http://www.xpathtester.com/saved/d9217787-8c73-48c9-8558-6a63c93918a4有什么建议吗?添加了'空格'和'冒号' – 2013-02-28 05:56:52

+0

有点用这个回答我自己的问题:http://www.xpathtester.com/saved/ca13e542-c02d-4aeb-aa6f-c59d4c267b24我删除了空间。但是,我正在使用的xpath引擎无法识别'normalize-space'方法。无论如何,我看起来像是沉没了。虽然谢谢! – 2013-02-28 06:14:49

+0

@RyanSchultz总是可以使用'contains()'而不是 – Phil 2013-02-28 08:54:22