2015-09-17 23 views
6

私は以下のhtmlを使用しています。Jsoupを使用しています。pセクションにテキストを抽出しようとしています(テキスト "Some text 2" ")。Jsoupを使用して属性を持たない要素を取得する

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

をしかし、それは動作しません:

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

私は、次のJsoup式を使用してみました。 ご協力いただきありがとうございます。

+0

「div#intro p:not(#some_id)」 'これは2番目のpを選択しますが、あなたの場合のみです。すべてのpには何の属性もありません。 –

答えて

3

私はJSOUP CSS selectorp:not([^])を使用することができます。これは、何かで始まる属性を持つものと一致しないpを選択します。

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()); 
} 

のみ、このp要素には属性はありませんので、上記の例では、唯一の

Some text 2 

を出力します。

セレクタp[^]は、属性を持つすべてのp要素を選択することに注意してください。

+0

ありがとうございました" div [id =イントロ]> p:しない([^]) "作品! – Alexander