phpbar.de logo

Mailinglisten-Archive

[php] xml mit dom

[php] xml mit dom

Yannik Hampe yannik at cipher-code.de
Don Feb 14 17:54:54 CET 2008



Christian Wohlgemuth wrote:
> Hallo Liste,
> 
> Dazu habe ich noch eine grundlegende Frage:
> Was sind die Vor/Nachteile zwischen dem Erstellen von Dokumenten mit DOM 
> und dem 'klassischen' <tag><?php echo $value; ?></tag> ?

Also wenn, dann bitte
<tag><?php echo htmlspecialchars($value); ?></tag> ?>
denn ansonsten kann es, wie von anderen hier in der Liste bereits gesagt 
zu inkorrekten xml-code kommen...

Vorteil der DOM-Methode ist, dass du ständig den kompletten xml-Baum im 
Speicher hast und ständig den Zugriff auf alle Elemente hast. Du kannst 
so nochmal etwas nachgucken, was du bereits im Baum hast und du kannst 
an jeder beliebigen Stelle einen Tag hinzufügen. Nicht nur am Ende, wie 
bei der echo-Methode.
Ein weiterer Vorteil ist, dass die Ausgabe von der DOM immer garantiert 
gültiges xml ist. Wenn du manuell generierst, kann es schonmal 
passieren, dass du vergisst einen Tag zu schliessen. Generell schützt 
dich das aber nicht vor unsinnigen Ausgaben, wenn du die Elemante an der 
falschen Stelle einordnest etc ;-).

Wenn du die genannten Funktionen nicht brauchst, ist es jedoch ziemlich 
unsinnig die DOM zu nehmen, da diese einen erhöten Bedarf an CPU und RAM 
stellt. Eine gute "Mittellösung" für das Problem ist phps XMLWriter:
<?php
   header('Content-Type: application/xml');
   $out =new XMLWriter();
   $out->openURI('php://output');
   $out->startDocument();
   $out->writeRaw('<?xml-stylesheet href="dein_xslt_doc.xsl" 
type="text/xsl" ?>');
// ... Jetzt mit Hilfe von $out->startElement,... xml schreiben
   $out->endDocument();
?>

Und schon hast du sehr effizient und trotzdem garantiert Syntaktisch 
korrektes xml erzeugt. (solange das writeRaw da oben natürlich richtig 
war ;-)).

> 
> vielen Dank,
> Christian

Yannik

php::bar PHP Wiki   -   Listenarchive