2015-09-17 24 views
6

Jsoup kullanarak aşağıdaki html'yi kullanıyorum: Öznitelik olmayan p bölümündeki metni ayıklamaya çalışıyorum (metin "Bazı metin 2" değil, "Bazı metinler 1" ").Jsoup kullanarak hiçbir özniteliği olmayan öğe alma

div[id=intro] > p:not(:has(@*)) 

Ama çalışmıyor:

<div id="intro"> 
    <h1 class="some class"> 
    <p id="some_id"> 
     Some text 1 
    </p> 
    <p> 
     Some text 2 
    </p> 
</div> 

aşağıdaki Jsoup ifade kullanarak çalıştı. Yardımlarınız için teşekkürler.

+0

nasıl hakkında "" div # intro p: not (#some_id) "' i ikinci p seçecektir ama sadece sizin durumunuzda, tüm p 'ler hiçbiri –

cevap

3

JSOUP CSS selectorp:not([^]), herhangi bir şeyle başlayan bir öznitelikle uyuşmayan herhangi bir p seçmek için kullanabilirsiniz. Sadece bu p elemanı hiç bir özelliğe sahip olduğundan

String html = "<div id=\"intro\">" 
     + "<h1 class=\"some class\">" 
     + "<p id=\"some_id\">" 
     + "Some text 1" 
     + "</p>" 
     + "<p name=\"some_name\">" 
     + "Some text A" 
     + "</p>" 
     + "<p data>" 
     + "Some text B" 
     + "</p>" 
     +"<p>" 
     + "Some text 2" 
     +"</p>" 
     +"</div> "; 

Document doc = Jsoup.parse(html); 
Elements els = doc.select("p:not([^])"); 
for (Element el:els){ 
    System.out.println(el.text()); 
} 

Yukarıdaki örnek sadece

Some text 2 

basar.

Seçicinin p[^], bir özniteliği olan tüm p öğeleri seçeceğini unutmayın.

+0

ile hayır demez, teşekkürler "div [id = intro]> p: not ([^]) "çalışır! – Alexander