2017-02-11 6 views
0

sucht Mein Problem ist: Wie kann ich ein Wort oder einen Ausdruck in der Seite suchen, die mit Jsoup ausgewählt wird.
Zum Beispiel, wenn das Wort oder der Ausdruck in einem Bereich wie kann ich pro Beispiel den Text neben diesem <span> finden? Zum Beispiel eine Verbindung?Android: wie man ein Wort oder eine Phrase mit Jsoup

Html Beispielcode:

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

Aus diesem Beispiel, wie man feststellen, dass mein Wort Favorit ist, und ich möchte auch den Link in <a href> abzurufen?

+0

http://stackoverflow.com/q/8451801/7012517 auf diesen Link verweisen ..! – Shobhit

+0

Danke ... Ich habe gelesen, aber ich habe nicht verstanden, was er tut :( – 24terminator96

+0

@shobhit haben Sie andere Alternativen? – 24terminator96

Antwort

2

Ziel: erhalten Text in einem span und href Attribute eines Geschwisters a Element, wenn die span ein Suchwort angegeben enthält.

Ein Weg ist, nach einem a mit dem href Attributsatz zu suchen, der ein preceding siblingspan Element hat. Wählen Sie dann das Elternelement und darin das Element span aus, um den Inhalt zu vergleichen. Für das Parsen eines DOM-Baums ist jsoup eine gute Option.

Beispielcode

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 
    } 
} 

Ausgabe

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

Im doc.select ist ~ das selbe von>? – 24terminator96

+0

ist dasselbe wie simbol? – 24terminator96

+0

Nein,> ist für das Kind, ~ ist für das Geschwister. Siehe: http://www.w3schools.com/css /css_combinators.asp –

Verwandte Themen