2016-05-02 3 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

Есть несколько проблем с вашим примером.

В скобках отсутствуют одиночные «Нажмите, чтобы просмотреть результат», ваши «заголовки» блоки и таблицы не закрыты и т. Д. Поэтому сначала убедитесь, что ваши данные хорошо отформатированы.

W3C's Xml Validator can help with that

Ваш XPath выглядит в основном хорошо, я думаю, что проблема с // в конце - они немного слишком рано. Попробуйте вместо этого:

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

// DIV [@ класс = 'headlineBlock']

Все дивы класса headlineBlock ...

/h2 [не (содержит ('| Clinton | Obama |', concat ('|',., '|')))]

... которые не содержат определенных терминов.

/..

уровень вверх (в настоящее время мы находимся в DIV headlineBlock снова)

//

Любые прямые потомки типа элемента a

/@ HREF

H-Ref Атрибут

+0

не совсем там еще = -. До сих пор тянет ALL в hrefs .. – codervince

+1

который может быть связано с перепутались структуры ваших данных - получить, что фиксированные и это будет работать. В противном случае вам придется работать с другими селекторами, такими как '[last() - 1]' 'follow' и т. Д. Текущая структура не соответствует требованиям XML и поэтому может интерпретироваться по-разному в зависимости от реализации парсера. –

Смежные вопросы