Может ли значение HTML-тега привязки быть получено с помощью xpath? - PullRequest
1 голос
/ 07 января 2010

Если у меня есть HTML, который выглядит следующим образом:

<td class="blah">&nbs;<a href="http://.....">????</a>&nbsp;</td>

Могу ли я получить ???? значение с помощью xpath? Как бы это выглядело?

Ответы [ 2 ]

1 голос
/ 07 января 2010

Чтобы использовать XPath, вам обычно требуется XML, а не HTML, но некоторые парсеры (например, встроенный в PHP) имеют смягченный режим, который также анализирует большую часть HTML. Если вы хотите найти всех <a>, которые являются прямыми потомками <td class="blah">, то необходимый вам XPath -

//td[@class = 'blah']/a
or
//td[@class = 'blah']/a[@href = 'http://...']

(в зависимости от того, хотите ли вы только один или все URL)
Это даст вам набор узлов. Вам нужно будет перебрать его, а затем проверить nodeType из firstChild (предполагается, что это текстовый узел) и количество дочерних узлов (должно быть 1). Тогда firstChild будет содержать ????

0 голосов
/ 07 января 2010

Зачем вам использовать синтаксический анализатор XML для разбора HTML? Я бы предложил использовать специальный HTML-анализатор Java, их много, но я сам не пробовал.

Что касается вашего вопроса, будет ли он работать, я подозреваю, что он не будет работать, вы получите ошибку при попытке проанализировать его как HTML прямо на &nbs;, если не раньше.

...