несколько строк () результатов для xpath? - PullRequest
2 голосов
/ 26 сентября 2011
string()

прекрасно работает на определенной веб-странице, с которой я пытаюсь извлечь текст.

http://www.bing.com/search?q=lemons&first=111&FORM=PERE

имеет похожую структуру.Для bing xpath, который я пробовал, это

string(//h3/a)

, который отлично работает для получения результатов поиска, даже с сильными тегами и т. Д., Но возвращает только первый результат.Есть ли что-то вроде strings (), чтобы я мог получить полный текст каждого

//h3/a

результата?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

Есть ли что-то вроде strings (), чтобы я мог получить полный текст каждого

//h3/a 

результат

Нет, не в XPath 1.0 .

Из спецификации W3C XPath 1.0 (единственный нормативный документ о XPath 1.0):

"Функция: строковая строка (объект?)

Строковая функция преобразует объект в строку следующим образом:

Набор узлов преобразуется в строку, возвращая строковое значение узел в наборе узлов, который находится первым в порядке документов. "

Итак, если у вас есть только движок XPath 1.0, вам нужно выбрать набор узлов из всех элементов //h3/a, а затем на языке программирования, на котором размещается XPath, выполнить итерацию на каждом узле и получить его строковое значение. отдельно.

В XPath 2.0 используйте :

//h3/a/string()

Результатом вычисления этого выражения XPath 2.0 является последовательность строк, каждая из которых является строковым значением одного из //h3/a элементов.

0 голосов
/ 26 сентября 2011

Документация MSDN string отмечает, что:

Функция string() преобразует набор узлов в строку, возвращая строковое значение первого узла в наборе узлов, что в некоторых случаях может привести к неожиданным результатам.

Это звучит как то, что вы испытываете. Почему вы вообще используете string()? 1012 *

Использование //h3/a/text()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...