2017-02-11 24 views
0

私の問題は、Jsoupで選択したページの単語やフレーズを検索する方法です。
たとえば、スパン内の単語またはフレーズが、この例の隣にある例文をどのように見つけることができますか?<span>?例えばリンク?Android:Jsoupで単語やフレーズを検索する方法

のHTMLコード例:この例から

... 
    <div class="div"> 
    <span>my y favourite text </span> 
    <a href="www.mylink.com">my link </a> 
    </div> 
    .... 

は、どのように私の言葉がお気に入りですし、私も<a href>内のリンクを取得することを見つけるには?

+0

http://stackoverflow.com/q/8451801/7012517このリンクを参照してください...! – Shobhit

+0

ありがとうございました...私はそれを読んだが、彼が何をしているのか理解していませんでした:( – 24terminator96

+0

他の選択肢がありますか? – 24terminator96

答えて

2

対象:spanに指定された検索語が含まれている場合、兄弟a要素のspanおよびhref属性のテキストを取得します。

href属性セットを持つaを検索する方法の1つは、preceding siblingspanという要素です。次に、コンテンツを比較する親要素とその中のspan要素を選択します。 DOMツリーの解析には、jsoupが適しています。

サンプルコード

String source = "<div class=\"div\"><span>my y favourite text </span><a href=\"http://www.mylink.com\">my link </a></div>" + 
     "<div class=\"div\"><span>my y favourite 2 text </span><a href=\"/some-link.html\">my link 1</a></div>" + 
     "<div class=\"div\"><span>my y text </span><a href=\"http://www.mylink.com\">my link 2</a></div>"; 

String searchWord = "favourite"; 

Document doc = Jsoup.parse(source, "UTF-8"); 
doc.setBaseUri("http://some-source.com"); // only for absolute links in local example 

Element parent; 
String spanContent=""; 
String link = ""; 

for (Element el : doc.select("span ~ a[href]")) { 
    parent = el.parent(); 
    if(parent.select("span").text().contains(searchWord)){ 
     spanContent = parent.select("span").first().text(); 
     link = parent.select("a[href]").first().absUrl("href"); 

     System.out.println(spanContent + " -> " + link); // do something useful with the matches 
    } 
} 

出力

my y favourite text -> http://www.mylink.com 
my y favourite 2 text -> http://some-source.com/some-link.html 
+0

doc.selectの〜は同じですか? – 24terminator96

+0

はsimbolと同じですか? – 24terminator96

+0

いいえ、>は子供のためのものです、〜は兄弟のためのものです参照:http://www.w3schools.com/css /css_combinators.asp –

関連する問題