Ich muss einige recht schwere XML-Dateien (zwischen 200 MB und 1 GB) lesen, die für einige von ihnen ungültig sind. Lassen Sie mich Ihnen ein kleines Beispiel:PHP - Lesen und Reparieren großer ungültiger XML-Dateien
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<item>
<title>Some article</title>
<g:material><ul><li>50 % Coton</li><li>50% Lyocell</li></g:material>
</item>
</rss>
Offensichtlich gibt es einen fehlenden </ul>
schließenden Tag im g:material
-Tag. Außerdem sollten Personen, die diesen Feed entwickelt haben, g:material
Inhalt in CDATA
beigefügt haben, was sie nicht taten ... Grundsätzlich möchte ich Folgendes tun: füge diesen fehlenden Abschnitt CDATA
hinzu.
Ich habe versucht, einen SAX-Parser zu verwenden, um diese Datei zu lesen, aber es schlägt fehl, wenn das </g:material>
-Tag gelesen wird, da das </ul>
-Tag fehlt. Ich habe es mit XMLReader versucht, habe aber grundsätzlich das gleiche Problem. Ich könnte wahrscheinlich etwas mit DomDocument :: loadHtml tun, aber die Größe dieser Datei ist nicht wirklich kompatibel mit einem DOM-Ansatz. Haben Sie eine Idee, wie ich dieses Feed einfach reparieren könnte, ohne viel RAM für DomDocument zu kaufen? Danke.
ja sollten sie es getan haben. Sie könnten immer versuchen, alle Dateien regexp zu finden/ersetzen, wenn Sie wissen, wo die Probleme liegen. aber es sollte dir nicht zuerst am Herzen liegen. – mpm
Hey Rémi, kannst du die Zeichenfolge nicht lesen und daher die CDATA-Abschnitte hinzufügen, bevor du sie an deinen XML-Lader schiebst? – brisssou
Ja, darüber habe ich nachgedacht und was ich gerade mache, aber ich hoffe immer noch, dass es besser ist zu denken, als XML-Zeichen für Zeichen zu lesen oder mit regexp zu finden/zu ersetzen :) – Remi