Gibt es einen lockeren, permissiven XML-Parser für PHP?

8

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!

    
Wagemage 17.05.2011, 13:31
quelle

2 Antworten

4

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.

%Vor%

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.

    
Carlos Campderrós 17.05.2011 14:04
quelle
1

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.

    
Matt Gibson 17.05.2011 14:33
quelle

Tags und Links