2010-02-22 2 views
5

У меня есть такое содержание HTML файла:
выражение XPath для выбора текста из ссылки

<a class="bf" title="Link to book" href="/book/229920/">book name</a>

Помоги мне построить выражение XPath, чтобы получить текстовую ссылку (название книги). Я пытаюсь использовать /a, но выражение оценивается безрезультатно.

ответ

2

Вы пробовали

//a 

?

Более конкретно лучше:

//a[@class='bf' and starts-with(@href, '/book/')] 

Обратите внимание, что это выбирает <a>элемент. В вашей среде хоста легко извлечь текстовое значение этого узла с помощью стандартных методов DOM (например, свойство .textContent).

Чтобы выбрать фактический текстовый узел, см. Другие ответы в этой теме.

+0

ваш ответ помог мне больше, но без запуска - с параметром! – alex

+0

@alex: Это было просто предназначение, чтобы быть примером «более конкретным лучше». ;) – Tomalak

11

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

Я думаю, что это должно выглядеть следующим образом

//a/text() 

EDIT: Как Томалак отметил, что это не text()text

3

Это зависит также от остальной части документа. Если вы используете // в начале, будут возвращены все соответствующие узлы, что может быть слишком большим, если у вас есть другие ссылки в вашем документе.

Кроме того, возможное выражение xpath равно //a/text().

/a Вы попытались вернуть только a -tag, если это корневой элемент. Чтобы получить текст ссылки, вам необходимо добавить часть /text().

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