Signatur
Beschreibung
Dom\NamespaceInfo ist eine schreibgeschützte Datenklasse, die Informationen über einen XML-Namensraum kapselt. Sie wird innerhalb der modernen DOM-Erweiterung (verfügbar seit PHP 8.4) verwendet und enthält typischerweise den Namensraum-Präfix sowie die zugehörige Namespace-URI.
Instanzen dieser Klasse werden nicht direkt instanziiert, sondern als Rückgabewert von Methoden wie Dom\Element::getInScopeNamespaces() oder Dom\Element::getDescendantNamespaces() zurückgegeben. Sie ermöglichen eine strukturierte Abfrage der in einem XML-Dokument definierten Namensräume.
Die Klasse ist besonders nützlich beim Parsen und Verarbeiten von XML-Dokumenten, die mehrere Namensräume verwenden – etwa XHTML, SVG, SOAP-Envelopes oder ähnliche Formate, in denen Namensräume eine zentrale Rolle spielen.
Beispiele
Namensräume eines Elements auslesen
<?php
$xml = <<<XML
<?xml version="1.0"?>
<root xmlns="http://example.com/default" xmlns:foo="http://example.com/foo">
<foo:child />
</root>
XML;
$doc = Dom\XMLDocument::createFromString($xml);
$root = $doc->documentElement;
// Alle im Gültigkeitsbereich befindlichen Namensräume abrufen
$namespaces = $root->getInScopeNamespaces();
foreach ($namespaces as $nsInfo) {
echo 'Präfix: ' . ($nsInfo->prefix ?? '(leer)') . "\n";
echo 'URI: ' . $nsInfo->namespaceURI . "\n";
echo '---' . "\n";
}
Nachfahren-Namensräume eines Dokuments ermitteln
<?php
$xml = <<<XML
<?xml version="1.0"?>
<root xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body xsi:nil="true" />
</root>
XML;
$doc = Dom\XMLDocument::createFromString($xml);
$root = $doc->documentElement;
foreach ($root->getDescendantNamespaces() as $nsInfo) {
/** @var Dom\NamespaceInfo $nsInfo */
printf("Präfix: %-10s URI: %s\n", $nsInfo->prefix ?? '(default)', $nsInfo->namespaceURI);
}
// Wichtig · Fallstricke
Schreibschutz: Die Eigenschaften von Dom\NamespaceInfo (z. B. prefix und namespaceURI) sind schreibgeschützt und können nicht von außen verändert werden.
Nur PHP 8.4+: Diese Klasse gehört zur neuen Dom\-Erweiterung, die in PHP 8.4 eingeführt wurde und die klassische DOMDocument-API ergänzt bzw. modernisiert. Sie ist nicht rückwärtskompatibel mit der alten DOM-Erweiterung.
Der Präfix kann null sein, wenn es sich um den Standard-Namensraum (ohne Präfix-Bindung) handelt.