2014-01-08 3 views
3

Можно ли выбрать элементы, которые не имеют определенного атрибута? Например, выберите все элементы, которые не имеют атрибута href.Элементы выбора Jsoup, которые не имеют атрибута

Keep:

<a href="somelink"> 

удалить:

<a name="jumphere"> 

Я пробовал:

doc.select("a :not([href])").unwrap(); 
doc.select("a:not([href])").unwrap(); 
doc.select("a [href='']").unwrap(); 

ни один из них не похоже на работу.

EDIT:

`doc.select("a:not([href])").unwrap();` actually works!! 
+2

Вы можете TestDrive JSoup здесь: http://try.jsoup.org/. Ваш второй срок должен работать. Почему «разворот» в этом контексте? –

+0

да, вы правы. Я не знаю, что я сделал неправильно, когда я его протестировал. Может ли якорь не иметь внутренний html? (не то, что это имеет смысл, я думаю.) Развернул ли какие-либо недостатки, чтобы удалить? Думаю, это может быть немного менее эффективно, потому что нужно проверять детей, но не должно быть так уж плохо. – cytofu

ответ

6

Вы используете дополнительный () пар, что вам не нужно. Так что это так:

doc.select("a").not("[href]").unwrap(); 
+0

nope Я так не думаю: Не удалось разобрать запрос ': not [href]' – cytofu

+0

@cytofu Я изменил его на 'a: not', я случайно оставил пробел. Попробуйте сейчас. – hichris123

+0

, тогда я получаю Не могу разобрать запрос 'a: not [href]' – cytofu

0

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

Elements as = doc.select("a"); 
for(Element element : as) 
{ 
if(element.attr("href").isEmpty() || element.attr("href") == null) 
{ 
    doSomthing(); 
} 
} 
Смежные вопросы