HTML mit Java säubern

htmlcleaner

Manchmal bekommt man als Programmierer unsauberes HTML (z.B. aus Word) und soll dann die Spreu vom Weizen trennen, sprich daraus ein zur Weiterverarbeitung XML konformes Dokument machen.

Wer schon mal HTML Code gesehen hat, der von Word generiert wurde, weiß wovon ich spreche. Damit man nicht jedes einzelne Dokument von Hand mit Tools wie z.B. HTML Tidy säubern muss, kommt schnell der Wunsch nach einer Bibliothek auf, die man in die eigenen Java Programme einbinden kann, um dort sauber ihren Dienst zu tun.

Gute Erfahrungen habe ich mit htmlcleaner gemacht. Hier ist ein kleiner Code Schnipsel:

String html="";

// Konfiguration einlesen und html säubern
HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
TagNode node = cleaner.clean(html);

// den Body extrahieren und als XML aufbereiten
PrettyXmlSerializer xmlSerializer = new PrettyXmlSerializer(props);
String xml=xmlSerializer.getXmlAsString(node.findElementByName("body", true));

Das ganze klappt übrigens auch sehr gut mit unsauberen XML.

10 Kommentare

  1. Hama · · Antwort

    hallo, ich habe versucht ein HTML-Seite mit HTML-Cleaner zu säubern, aber funktioniert nicht! können Sie mir vielleicht helfen? wie ich mit java eine URL-Seite säubern kann!
    Was Sie geschrieben haben, habe ich schon probiert und wie gesagt es geht aber nicht!
    Ich danke Ihnen im Voraus.
    mfg

  2. Hama · · Antwort

    Hallo nochmal,
    also, mein Problem ist das „Win Latin“ Zeichen (Cp1252) !!
    nachdem erzeugen eine xml-Datei mit dem Zeichntyp „Cp1252“ , kann ich nicht mit hilfe eine XSLT-Parser die xml datei parsen oder sogar lesen!
    die fehler meldeung ist wie folgt:

    FEHLER: ‚Invalid encoding name „Cp1252“.‘
    FEHLER: ‚com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Invalid encoding name „Cp1252“.‘

    usw.

    danke für eine posetive Antwort 🙂

    1. Als Workaround versuch es mal mit UTF-8. Es scheint da Probleme in älteren Xerces Versionen zu geben (s. bugs.sun.com).

  3. Hama · · Antwort

    Work Around
    Open the EAR file in the GUI deploytool and then save it.
    The tool will automatically change the encoding from Cp1252
    to UTF-8.

    Ich verstehe das nicht! –> (the EAR file in the GUI deploytool).

  4. Hama · · Antwort

    Hallo,

    ich konnte das Problem nicht lösen!
    Ich habe viel im Internet angeschaut nach „Encoding Cp1252 to UTF8 mit Java“ und habe keine Lösung gefunden!
    können Sie mir bitte die Lösungsidee erklären!
    Ich werde sehr dankbar.
    mfg

  5. Hama · · Antwort

    wie es scheint —> in Work Around :
    Eine zusätzliche JAR-Datei muss in EAR-File geschpeichert werden!

    Unter mein Eclipse–> EAR-Libraries stehen (Access rules) und (Native Library location)

    Ich weiss es nicht welche Datei und wo muss geschpeichert werden!!?

  6. Hama · · Antwort

    hallo,

    ich habe versucht die Datei als Test-Datei auszulesen und die erste Zeile „Encoding Cp1252“ mit „Encoding UTF-8“ umzutauschen! und dann wieder die datei in .xml umzuwandeln! aber die Datei kann nicht mehr als xml behandelt werden!!!!
    können Sie mir bitte helfen!
    danke schön.

  7. Hama · · Antwort

    Hallo,

    wie Sie von mir verlangt haben, habe ich Ihnen letzte Woche eine Email geschickt.
    Ich werde sehr dankbar, wenn Sie mir eine Lösung geben können 🙂

    mfg,
    Hama Baker

  8. Hama · · Antwort

    Hallo,

    haben Sie vielleicht die Lösung dieses Problems gefunden?
    Ich bräuchte es dringend! Wenn Sie mir eine Lösung geben können, wäre ich sehr dankbar.
    mfg,
    Hama

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: