Have:Wie JSOUP HTML nach dem nextSibling analysieren? HTML
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="27%" align="left" valign="top">
<span class="param">Text0</span> 23<br />
<span class="param">Text1</span> 173<br />
<span class="param">Text2</span> 54<br />
<span class="param">Text3</span> 2<br /><br />
</td>
<td width="27%" align="left" valign="top">
<span class="param">Text4</span><br />
one <br />
two <br />
three <br />
</td>
<td width="46%" align="left" valign="top">
<span class="param">Text5</span><br />
one -<br />
two -<br />
three -<br />
</td>
</tr>
</table>
Ich kann Wert erhalten Text0-3 Codeänderung analysieren erhalten (0) -get (3), aber kann nicht Text4 und Text5 erhalten:
Document doc = Jsoup.connect("text.html").get();
Element param = doc.select("span[class=param]").get(0);
Node node = param.nextSibling();
System.out.println(node.toString());
Wie Wert Text4 erhalten und Text5? erhalten (4) oder erhalten (5), jetzt br zurückkehren, aber ich brauche zu bekommen "eins, zwei, drei"
Jetzt benutze ich diesen Code:
Document doc = Jsoup.connect("text.hml").get();
Elements params = doc.select("span[class=param]");
int i;
for (i=0; i<6; i++) {
Element param = params.get(i);
Node node = param.nextSibling();
System.out.println(node.toString());
}
dieser Druck:
23
173
54
2
<br>
<br>
ich brauche:
23
173
54
2
one two three
one two three
Verrücktes Code Antwort:
Document doc = Jsoup.connect("text.html").get();
Elements params = doc.select("span[class=param]");
int i;
for (i=0; i<3; i++) {
Element param = params.get(i);
Node node = param.nextSibling();
System.out.println(node.toString());
}
for (i=4; i<5; i++){
Element apar = params.get(i);
Node apan = apar.nextSibling();
System.out.println("apar: "+apan.nextSibling().toString());
System.out.println("apar: "+apan.nextSibling().nextSibling().nextSibling().toString());
System.out.println("apar: "+apan.nextSibling().nextSibling().nextSibling().nextSibling().nextSibling().toString());
//System.out.println(apan.nextSibling().toString());
}
for (i=5; i<6; i++){
Element vih = params.get(i);
Node vihn = vih.nextSibling();
System.out.println("vih: "+vihn.nextSibling().toString());
System.out.println("vih: "+vihn.nextSibling().nextSibling().nextSibling().toString());
System.out.println("vih: "+vihn.nextSibling().nextSibling().nextSibling().nextSibling().nextSibling().toString());
//System.out.println(apan.nextSibling().toString());
}
}
dieser verrückte (?) Code druckt was ich will.
Was wird mit 'node.toString()' gedruckt? – pczeus
wenn gesetzt: get (0), drucke 23. Wenn set (5) gesetzt ist, drucke
. aber ich brauche "eins zwei drei" – yar1k
Nun, da Sie die Frage aktualisiert haben, macht es weniger Sinn. Sie suchten zunächst nach den Daten innerhalb der Elemente. Aber jetzt versuchen Sie, zufällige Daten zu erhalten, die nichts mit den Span-Elementen zu tun haben, sondern tatsächliche Daten innerhalb der Elemente sind. Vielleicht kannst du einfach beschreiben, was du zu erreichen versuchst. – pczeus