2010-02-21 18 views
19

Ich habe HTML Tidy in meine Anwendung eingebettet, um eingehende HTML zu bereinigen. Aber Tidy hat eine Menge Bugs und das Reparieren direkt in der Quelle ist mein schlimmster Albtraum. Tidy Quellcode ist ein unleserlicher Abscheulichkeit. Thousand + Line-Funktionen, schlechte Benennung von Variablen, Spaghetti-Code usw. Es ist wirklich schrecklich.Gibt es eine Alternative zu HTML Tidy?

Schlimmer noch, offizielle Entwicklung seems to have ceased. In den letzten 12 Monaten gab es drei Schreibvorgänge in das offizielle CVS Repo. Aber es ist tot und begraben für viel länger als das ...

Also ich bin auf der Suche nach einer OSS C oder C++ - Anwendung/Bibliothek, die tun kann, was Tidy kann (wenn es sich anfühlt): Fix schlechte HTML-Markup und wandle es in gültiges XHTML um (das ist der Teil, an dem ich interessiert bin). Und ich meine alle Arten von schlechtem Markup.

Gibt es so etwas da draußen?

EDIT: Ich brauche es sowohl für die Manipulationen an der DOM-Struktur von einem XML-Handling-Tool und für die allgemeine Einhaltung der XHTML-Spezifikation. Meine App muss HTML von Benutzern akzeptieren (was oft in vielerlei Hinsicht ungültig ist) und gültiges XHTML ausgeben. Es muss in der Lage sein, sogar HTML zu verarbeiten, das normalerweise nicht in einem Browser angezeigt wird, weil der Benutzer es von Hand bearbeitet und anschließend nicht überprüft hat.

Ein Drop-In-Ersatz für Tidys fehlerkorrigierenden Parser ... der nicht saugt. Es macht mir nichts aus, wenn die Quelle lesbar ist und ich Probleme selbst beheben kann, oder wenn es aktive Entwickler gibt, die Bugfixes rechtzeitig zur Verfügung stellen.

+0

Ich weiß nicht, ob das für Sie nützlich ist, aber es gibt eine Java-Bibliothek namens TagSoup (http: //home.ccil.org/~ cowan/XML/tagsoup /), die anscheinend ein paar C++ - Ports hat, vielleicht, außer dass man nicht frei ist und ich bin mir nicht sicher, ob das andere gepflegt wird. Es erzeugt einen Strom von SAX-Ereignissen, aber diese in eine XML-Ausgabe umzuwandeln, sollte nur darauf beruhen, das richtige Rohr an der Düse anzubringen. Habe es aber nie selbst benutzt. –

Antwort

2

Können Sie uns mitteilen, wofür Sie dieses Tool verwenden möchten? Wie in, möchten Sie statische Webseiten reparieren, oder wollen Sie eine Art Filterschritt vor anderen Manipulationen, damit ein Tool mit fehlerhaften Webseiten umgehen kann?

Persönlich schreibe ich mein eigenes Tool auf Python BeautifulSoup oder lxml wann immer ich brauche --- es ist höchstens ein Dutzend Zeilenskript und macht viel von dem, was ich will.

+0

Ich kann Python oder seine Bibliotheken nicht verwenden. Dies ist eine GUI, native Code-Anwendung. Die Integration des Python-Interpreters ist keine Option. – Lucas

+0

Nun, für eine GUI-native Code-App ist die technische Integration des Python-Interpreters * eine Option, aber vielleicht keine ansprechende, wenn Sie die Vor- und Nachteile abwägen. http://docs.python.org/extending/embedding.html –

+0

Dann würde ich native Bindungen für lxml betrachten --- es kann Parsing ziemlich gut tun, sogar für schrecklich gebrochenen HTML. – pavpanchekha

2

Es gibt eine neue, schöne, richtige HTML 5 Tidy unterstützen, so dass die Alternative zu alt, hässlich Tidy wäre Tidy (GitHub repository).

0

Für etwas, das tatsächlich Code korrigiert, ist Ihre beste Wette immer noch HTML Tidy. Es gibt viele Linters, aber nicht wirklich alles, was Fehler an HTML repariert, außer Tidy.

Auf dem ersten Blick, moderner OOP-Programmierer könnte denken, dass der Quellcode ist ein unlesbarer Greuel, aber in der C-Welt, Ordentlich ist ziemlich anspruchsvoll Bibliothek, die eine Menge fortschrittlicher OO-Konzepte verwendet und bietet eine sehr durchdachte Schnittstelle, deckt fast alle seine Funktionen in einer reinen C-API auf.

Ein Gelegenheitsentwickler wird verloren gehen, aber sobald er eingetaucht ist, ist der Code ziemlich schön. Zugegeben, Namenskonventionen sind eine gemischte schlecht, aber PR's sind willkommen!