Burn wrote:Ich habe das ganze über die....tada, XML Funktionen von PHP gemacht: 
http://www.php.net/manual/en/ref.xml.php . Auf der Seite gibt es auch gleich ein paar gute Beispiele.
Das ganze scheint mir weitaus weniger kompliziert als DOM, hat aber auch seine Grenzen.
 
Naja, wie ich gesagt habe, es kommt auf den Verwendungszweck an. Gerade wenn du komplexe Baumstrukturen hast (auch wenn du sie nicht ändern willst), hat SAX (also die von dir verwendete Methode) den Nachteil, dass du dir über Variablen merken musst, auf welcher Ebene du gerade bist. Das kann ganz schön Nerven kosten (ich spreche da aus Erfahrung).
Bei DOM ist der größte Nachteil, dass es nicht für große Dokumente geeignet ist (okay, bei PHP wird man das auf Grund der Struktur nicht merken, da wird auch SAX bei großen Dokumenten schlapp machen). In Java kann man mit SAX auch problemlos mehrere MB oder zig MB große Dokumente verarbeiten, weil eben nicht die komplette Baumstruktur im RAM gehalten werden muss.
Hier übrigens noch ein Beispiel für DOM mit PHP. Ich habe es gerade erst heute Abend geschrieben. Es wird ein RDF-Newsfeed-File ausgelesen:
Code: Select all
$content = implode('', file("extern/newsticker.rdf"));
$document = domxml_open_mem($content);
$root = $document->document_element();
$items = $root->get_elements_by_tagname("item");
foreach ($items as $item)
{
 $title_node = $item->get_elements_by_tagname("title");
 $title = $title_node[0]->get_content();
 $link_node = $item->get_elements_by_tagname("link");
 $link = $link_node[0]->get_content();
 echo "<a href="$link">".htmlspecialchars($title)."</a><br/>";
Die gleiche Sache wäre mit SAX wohl um einiges aufwendiger gewesen (in meinem Fall gingen zwei Stunden drauf, um zu merken, dass das File zwar als Encoding ISO-8859-1 
angab, aber in Wahrheit Windows-1252 
benutzte. Ich werde morgen mal eine Mail an den zuständigen Webmaster schicken, dass es nicht besonders nett ist, einen anderen Zeichensatz zu benutzen, als anzugeben. Ich habe nämlich 1,5 Stunden nach einem Fehler in meinem Skript gesucht (da es da auch einiges an Zeichensatz-Umwandlungen gibt, weil im Kern UTF-8 benutzt wird).