phpbar.de logo

Mailinglisten-Archive

[php] xml mit dom

[php] xml mit dom

Christian Wohlgemuth info at codesign-online.de
Don Feb 14 22:50:03 CET 2008


Yannik Hampe schrieb:
> 
> 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 ;-).
Was mich noch interessieren würde, wenn ich ein XML-Dokument per DOM 
erstelle, ob DOM gleich kontrolliert, ob alles auch der DTD entspricht.
Werde ich mal bei gegebener Zeit überprüfen....

> 
> 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

Christian

php::bar PHP Wiki   -   Listenarchive