XPATH Firebug过滤器未按预期过滤

时间:2016-05-02 05:14:29

标签: xpath

基本上我有一份总统名单,我只对尼克松的联系感兴趣而不是克林顿或奥巴马。 我所发现的是,我所做的过滤会返回正确数量的总统(在这种情况下为1),但会返回所有的链接,而不仅仅是尼克松的链接。

HTML:

<a href="#" name="obama"></a> <div class="headlineBlock">
<h2>Obama</h2>
<p class="tudor"><strong>Conditions:</strong> Always sunny </p>
<table class="resultGrid"><tr> <td class="first">
<h4><a href="http://www.thelinkiwant.com?params" title="Click to view result"</a></h4>
<a href="#" name="nixon"></a> <div class="headlineBlock">
<h2>Nixon</h2>
<p class="nixon"><strong>Conditions:</strong> Sometimes late </p>
<table class="resultGrid"><tr> <td class="first">
<h4><a href="http://www.thelinkiwant.com/?params" title="Click to view result"</a></h4>
<a href="#" name="clinton"></a> <div class="headlineBlock">
<h2>Clinton</h2>
<p class="tudor"><strong>Conditions:</strong> Never rainy </p>
<table class="resultGrid"><tr> <td class="first">
<h4><a href="http://www.thelinkiwant/?params" title="Click to view result"</a></h4>

XPATH:

$x("//div[@class='headlineBlock']/h2[not(contains('|Clinton|Obama|',concat('|',.,'|') ))]//../../table/a/@href")

1 个答案:

答案 0 :(得分:0)

您的示例有几个问题。

在单击“单击以查看结果”之后缺少括号,您的“headlineBlock”div和表格未关闭等等。首先,您应该确保数据格式正确。

W3C's Xml Validator can help with that

你的XPath看起来很好,我认为问题出在最后的// - 它们有点太早了。试试这个:

//div[@class='headlineBlock']/h2[not(contains('|Clinton|Obama|',concat('|',.,'|') ))]/..//a/@href
  

// DIV [@类= 'headlineBlock']

类headlineBlock的所有div ...

  

/ h2 [not(contains('| Clinton | Obama |',concat('|',。,'|')))]

......不包含某些条款。

  

/ ..

上一级(现在我们再次在div headlineBlock

  

//一个

元素类型a

的任何直接后代
  

/ @ HREF

H-Ref属性