SimpleXML und CDATA

Seit PHP5 gibt es ein neues Modul in PHP, um XML-Dateien spielend leicht zu parsen: SimpleXML.

Das ganze hat jedoch einen entscheidenden Nachteil: CDATA aus XML-Dateien wird nicht interpretiert. Das heißt auf Deutsch: Wenn man in XML Zeichen wie <, > oder & einfügen will, muss man diese umwandeln in <, > und & – das sieht natürlich nicht sehr schön aus und nimmt Platz weg. Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<xmlfile>
 <item>Fünf ist größer als 2: 5 > 2</item>
</xmlfile>

Das wäre dann eine ungültige XML-Datei, weil das Zeichen “>” direkt vorkommt.

Dafür gibt es nun die CDATA-Abschnitte: Innerhalb dieser Abschnitte darf <, > und & direkt stehen und wird vom Parser quasi ignoriert. Beispiel:

<![CDATA[Fünf ist größer als 2: 5 > 2]]>

Dies wäre nun gültiges XML. Das Problem mit SimpleXML ist dabei allerdings, dass dieses beim Parsen die CDATA-Abschnitte komplett weglässt, als würde dort oder stehen.

Manche Leute versuchen das ganz kompliziert zu lösen – dabei hätte ein Blick in die Dokumentation doch auch schon genügt. Dort steht nämlich folgende Option beschrieben:

LIBXML_NOCDATA (integer)
Merge CDATA as text nodes

Zu gut Deutsch: “CDATA als normalen Text behandeln”.

Gibt man nun diese Option bei simplexml_load_file() oder simplexml_load_string() mit an, so löst sich das Problem ganz von selbst auf:

simplexml_load_file('xmldatei.xml', null, LIBXML_NOCDATA);

So leicht geht das.

Kommentare & Trackbacks (0)

keine Kommentare

Jetzt kommentieren

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">





 

Kategorien

 

Der Kau: Der Link führt übrigens zu einem “Test”. Allerdings erwähnt schon die Einleitung die...

Der Kau: Der Datenschutz ist nach der Rechtsprechung des Bundesverfassungsgerichts ein Grundrecht (Recht auf...

Benny: Und wieder seh ich eigentlich kein Problem dahinter? Solange hier nur firmenintern die Mails überwacht werden...

Der Kau: Mit der Demokratie gehts schon seit Jahren bergab… Die großen / mächtigen Staaten sind inzwischen so...

Steffen: Das stimmt, aber die Grundproblematik bleibt ja dennoch bestehen. Wenn der Staat immer mehr Schulden...

 

Blogroll