Ich habe HTML Tidy in meiner Anwendung eingebettet, um eingehendes HTML zu bereinigen. Aber Tidy hat eine enorme Menge an Fehlern, und sie direkt im Quellcode zu beheben ist mein schlimmster Alptraum. Der Tidy-Quellcode ist eine unlesbar Abscheulichkeit. Tausende Zeilen Funktionen, schlechte Variablennamen, Spaghetti-Code usw. Es ist wirklich schrecklich.
Noch schlimmer ist, dass die offizielle Entwicklung anscheinend eingestellt wurde. In den letzten 12 Monaten gab es drei Schreibvorgänge im offiziellen CVS-Repository. Aber es ist schon viel länger tot und begraben...
Also suche ich nach einer OSS C- oder C++-Anwendung/Bibliothek, die das kann, was Tidy kann (wenn es Lust hat): fehlerhaftes HTML-Markup korrigieren und in gültiges XHTML umwandeln (das ist der Teil, der mich interessiert). Und ich meine jede Art von fehlerhaftem Markup.
Gibt es so etwas da draußen?
EDIT: Ich benötige es sowohl für Manipulationen am DOM-Baum durch ein XML-Verarbeitungstool als auch für die allgemeine Einhaltung der XHTML-Spezifikation. Meine App muss HTML von Benutzern akzeptieren (das oft in vielerlei Hinsicht ungültig ist) und gültiges XHTML ausgeben können. Es muss sogar mit HTML umgehen können, das normalerweise nicht in einem Browser angezeigt wird, weil der Benutzer es von Hand bearbeitet hat und danach nicht überprüft hat.
Ein Ersatz für Tidys fehlerkorrigierenden Parser... der nicht schlecht ist. Mir macht es nichts aus, wenn es Fehler gibt, wenn der Quellcode lesbar ist und ich Probleme selbst beheben kann, oder wenn es aktive Entwickler gibt, die zeitnah Bugfixes bereitstellen.
0 Stimmen
Ich weiß nicht, ob das für dich nützlich ist, aber es gibt eine Java-Bibliothek namens TagSoup (home.ccil.org/~cowan/XML/tagsoup), die anscheinend ein paar C++-Ports hat, vielleicht, außer dass eines nicht kostenlos ist und ich mir nicht sicher bin, ob das andere gewartet wird. Es erzeugt eine Reihe von SAX-Ereignissen, aber das in XML-Ausgabe umzuwandeln sollte nur eine Frage des Anbringens des richtigen Rohrs am Auslauf sein. Ich selbst habe es noch nie benutzt.