2016-08-07 4 views
1

Wie bekomme ich Elemente aus allen Tabellen und jeder Tabelle nicht geschachtelte Tabelle auswählen Ich möchte Tabelle aus ID = Kunden, Kunden2, Kunden3 aber die auswählen Problem ist customers3 ist verschachtelt in customers2 Ich möchte nicht get durch ID und customers2 haben keine customers3 Artikel bitte helfen und dankeHaben Sie eine andere Möglichkeit, Text von Tabelle in HTML zu bekommen und diese Tabelle geschachtelt Tabelle

PS. für den einfachsten Weg können Sie versuchen, in Web https://try.jsoup.org/ Beispieldatei: https://github.com/jhy/jsoup/files/403482/Table01.txt PS. jhy führen mich hier fragen

+0

Möchten Sie den "tr" jeder Tabelle einschließlich der verschachtelten erhalten? –

+0

Hauptsächlich habe ich versucht, Htmltable zu Array aber das Ergebnis seiner Kunden, Kunden2 {customers3} (got 2 Tabelle) , was ich brauche wollen Kunden sein, Kunden2, customers3 (got 3-Tabelle zu konvertieren und zweite Tabelle bekomme nicht customer3 als geschachtelte Tabelle) –

Antwort

0

Nachdem ich viel Zeit damit verbringen, finde ich die Art und Weise zu bekommen, aber es seine Arbeit für 1 verschachtelte Tabelle nur und Code sieht schmutzig (ich mit dieser Datei getestet https://github.com/jhy/jsoup/files/403482/Table01.txt)

StringBuilder contentBuilder = new StringBuilder(); 
    try { 
     BufferedReader in = new BufferedReader(new 
       FileReader(System.getProperty("user.dir")+"\\html\\"+"Table01.html")); 
     String str; 
     while ((str = in.readLine()) != null) { 
      contentBuilder.append(str); 
     } 
     in.close(); 
    } catch (IOException e) { 
    } 
String html = contentBuilder.toString(); 
Document doc = Jsoup.parse(html); 
// Take nested table as Elements first 
Elements nestedTables = doc.select("td table"); 
// remove nested Table in document 
doc.select("td table").remove(); 
// Then get it again 
Elements tables = doc.select("table"); 

das ist so gut wie ich kann. Vielen Dank, Davide Pastore Entschuldigung für den Mangel in Englisch

0

Es klingt wie Sie eine Seite mit Tabellen wie dieses:

<table id="customers"> 
    <tr> 
     <td>foo1</td> 
     <td>bar1</td> 
    </tr> 
</table> 

<table id="customers2"> 
    <tr> 
     <td>foo2</td> 
     <td>bar2</td> 
     <td> 
      <table id="customers3"> 
       <tr> 
        <td>foo3</td> 
        <td>bar3</td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 

Und Sie wollen die Elemente erhalten, eingebettete Elemente auszuschließen.

Sie können CSS-Selektoren verwenden, um dies zu erreichen.

for (Element cell : doc.select("table td:not(:has(table))")) 
    System.out.println(e.ownText()); 

Ausgabe

foo1 
bar1 
foo2 
bar2 
foo3 
bar3 

Auch brauchen Sie nicht eine Datei mit einem Puffer zu öffnen und den gesamten Text Inhalte für jsoup greifen. Sie können eine Datei einfach an Jsoup übergeben.

Document doc = Jsoup.parse(new File("test.html"), "UTF-8"); 

Weitere Beispiele finden Sie in der Jsoup Cookbook.

+0

Whoa !!! Vielen Dank für wundervollen Code im File Reader Bereich –

Verwandte Themen