Java String aus TagNode extrahieren
lima-city → Forum → Programmiersprachen → Java
antwort
arbeiten
baum
beliebige tag
blaue raten
code
einfachen string
gefundenen strings
gegebenen beispiel
komplizierter string
konstrukt
liste
machen
methode
objekt
private string
richtigen reihenfolge
string
tag
weiteren tag
-
Über den HtmlCleaner erhält man einen Tag-Baum einer geparsten Html. Ein Tag-Objekt beinhaltet eine Liste mit weiteren Tag-Objekten und eine weitere Liste mit den Strings. Ich stehe nun vor einem Rätsel, wie man den String aus einem vergleichbaren Html-Ausschnitt extrahieren könnte.
<td> Das <i>ist</i> mein <i>verdammt</i> langer und <b>sehr</b> komplizierter <i>String</i> </td>
Das TagNode (td) enthält laut dem gegebenen Beispiel eine Liste mit 4 weiteren Tag-Objekten (i), in denen sich die Strings "ist", "verdammt", "sehr" und "String" befinden. Zudem enthält das TagNode (td) eine weitere Liste mit den Strings "Das", "mein ", "langer und" und "komplizierter".
Ich benötige einen Iterator, der mir aus dem Tag-Baum einen einfachen String zusammensetzt -> "Das ist mein verdammt langer und sehr komplizierter String".
private String getContent(TagNode tagNode) { String tagContent ... for(TagNode curTag : tagNode.getChildTags()) { tagContent = getContent(curTag); } return tagContent; }
Im Prinzip übergebe ich der Methode ein TagNode, diese durchläuft den Baum, und fügt alle gefundenen Strings in der richtigen Reihenfolge zusammen. Hat jemand eine Idee, wie man diesen Iterator realisiert? Ich sehe irgendwie keinen Zusammenhang zwischen der Liste mit den Tag-Objekten und der Liste mit den Strings, um alles in der richtigen Reihenfolge zusammenzusetzen. Vielleicht liegt es an der Müdigkeit, ist etwas spät :-)
Edit: Ach ja, der Iterator soll auf beliebige Tag-Konstrukte anwendbar sein, nicht nur auf das Beispiel
Beitrag zuletzt geändert: 29.9.2011 23:52:28 von pixilab -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Moin,
ich könnte jetzt ins Blaue raten, aber ich frage lieber mal: Wie schaut denn Deine Ausgabe aus?
Kommen zuerst die Strings aus <td> und nachfolgend jene aus <i>?
Da Du ja versuchst rekursiv zu arbeiten, müssten ja eigentlich die Strings nacheinander folgen.
Komisch an Deiner Methode ist aber auch, warum Du nur einen String zurückgibst, wenn doch zig weitere in den Tags gefunden werden?
Du musst die Strings schon innerhalb der Methode akkumulieren, andernfalls bringt das nicht das von Dir gewünschte Ergebnis.
Gruß,
Pawnee
-
Komme erst jetzt an den PC, sorry für die späte Antwort.
Schonmal danke für deine Antwort.
Hab mir das Ganze nochmal mit relativ frischem Kopf angeschaut. So wie es aussieht bietet das TagNode-Objekt auch eine Object-Liste an, in der die Tags und Strings in ihrer richtigen Reihenfolge zusammengeschmissen sind. Man muss nur unterscheiden was String und was TagNode ist. Die Liste brauche ich aber garnicht mehr selbst zu iterieren, weil es noch die Methode getText() gibt, welche genau das macht, was ich mit getContent() vorhatte.
Das Problem hat sich glaube ich erledigt :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage