2016-05-02 44 views
0

基本上我有一個總統名單,我只對尼克松鏈接感興趣,而不是克林頓或奧巴馬。 我發現,按照我所做的過濾返回正確數量的總統(即在這種情況下爲1),但返回所有鏈接而不是尼克松的鏈接。XPATH Firebug過濾器不按預期過濾

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") 

回答

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 [不是(包含('| Clinton | Obama |',concat('|',','|')))]

...不包含某些術語。

/..

上一層(現在大家都在DIV headlineBlock再次)

//一個

元素類型的任何直系後代a

/@ HREF

H-ref屬性

+0

還沒有應用= - 仍然是拉動所有A HREF中.. – codervince

+1

這可能是由於你的數據弄亂了結構 - 得到固定和它會工作。否則,你將不得不與其他選擇符一起工作,如'[last() - 1]''following'等等。當前結構不符合XML,因此可以根據解析器的實現進行不同的解釋。 –