DOM und Namespaces
Notiz an mich selbst…
Derzeit arbeite ich hauptsächlich mit der DOM-Implementierung von PHP. Nun habe ich erstmals auch externe XML-Dateien eingelesen und verarbeitet (das gibt einen kleinen RSS-Reader).
Dabei entstand ein Problem, das ich zunächst einmal lange nicht nachvollziehen konnte:
<?php
$doc = DOMDocument::loadXML($str);
$x = new DOMXPath($doc);
$channel = $x->query('channel', $doc->documentElement);
echo $channel->length;
?>
Ergab immer 0. Dabei existierte der Node. Nach einigen Versuchen entdeckte ich, dass der Rootnode ein Namespace definiert hatte.
Ahhhh… ok.
<?php
$x->registerNamespace('default', $doc->documentElement->namespaceURI);
$channel = $x->query('default:channel', $doc->documentElement);
?>
1. Ahhh, gut.
März 13, 2006 | Kategorie PHP | Kommentieren