Ich suche nach einem Parser, der es mir erlaubt, zerbrochenes XML erfolgreich zu parsen, wobei ich zum Beispiel einen "Best-Guess" -Ansatz verwende.
%Vor%Idealerweise wird es ein Ding-Objekt mit einer Beschreibungseigenschaft und einer beliebigen Tag-Suppe ergeben.
Weitere Vorschläge, wie Sie das Problem angehen können (außer dass Sie ein gültiges Markup haben, um damit zu beginnen), willkommen.
Nicht-php Lösungen (Schöne Suppe (Python) zum Beispiel) sind nicht außerhalb der blasse, aber ich würde lieber bei den vorherrschenden Fähigkeiten in der Firma bleiben
Danke!
Sie können DOMDocument::loadHTML()
(oder DOMDocument::loadhtmlfile()
) verwenden, um Ihr fehlerhaftes XML in das richtige XML zu konvertieren. Wenn Sie nicht gerne mit DOMDocument
objects arbeiten, dann verwenden Sie saveXML()
und laden die resultierende XML-Zeichenfolge mit SimpleXML.
Ich habe dieses Skript ausprobiert:
%Vor%Die Ausgabe, wenn diese vom CLI ausgeführt wird:
%Vor%edit: einige kleinere Korrekturen und Fehlerbehandlung.
edit2: Wechsel zu nicht statischem Aufruf, um E_STRICT Fehler zu vermeiden, Testfall hinzugefügt.
Eine Alternative ist die Tidy HTML Bibliothek ( PHP verbindlich hier ), um den HTML-Code zuerst zu bereinigen. Das überlebt ziemlich viel scheußliches Input, und ich habe gesehen, dass Leute es benutzen, um ziemlich seiliges HTML vorher zu kratzen.