2013-09-06 2 views
0

Я хочу захватить коллекцию всех ссылок на странице с внутренним текстом.Xpath получить все ссылки с внутренним текстом

Это действительные случаи:

<a>Foo</a> 
<a><span>Bar</span></a> 

Это недопустимые случаи:

<a></a> 
<a><span></span></a> 

я пытался:

//a[text()] но игнорирует случай с охватывает

//a[not(text()='')], но это не отфильтровывать пустой корпус

Есть ли какой-нибудь способ, чтобы проверить, если text()=NULL?

Примечание:

Я знаю, что я могу использовать document.links;, а затем фильтр вручную, но я предпочел бы просто получить чистое выражение.

ответ

2

Хотя ответ сделал @ Seanny123 правильно, я бы так: -

HTML:

<a>Foo</a> 
<a><span>Bar</span></a> 
<a></a> 
<a><span></span></a> 

XPATH:

//a[string()] 
1

Правильное выражение:

//a[normalize-space()]

Благодаря this question для просветить меня.

+1

Почему только 'normalize-space()'? Это также работает - '// a [string()]'. –

+0

Я проведу оба и обновляю свой ответ, с которым быстрее. – Seanny123

+0

Вы проверяете это и даете мне знать, если он коорирует, тогда я хочу, чтобы он опубликовал в качестве ответа! :) –

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