kostenloser Webspace werbefrei: lima-city


Java String aus TagNode extrahieren

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    Ü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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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

  4. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    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. :biggrin:

    Das Problem hat sich glaube ich erledigt :)
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!