(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SimpleXMLElement::getDocNamespaces — Devuelve los espacios de nombres declarados en un documento
$recursive
= false
, bool $fromRoot
= true
): array|falseDevuelve los espacios de nombres declarados en un documento.
recursive
Si se especifica, devuelve todos los espacios de nombres declarados en los nodos padres e hijos. De lo contrario, devuelve únicamente los espacios de nombres declarados en el nodo raíz.
fromRoot
Permite verificar recursivamente los espacios de nombres bajo un nodo hijo en lugar de realizar esta verificación desde la raíz del documento XML.
El método getDocNamespaces
devuelve un array de espacios de nombres
con sus URL asociadas.
Ejemplo #1 Obtiene los espacios de nombres del documento
<?php
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns">
<p:person id="1">John Doe</p:person>
<p:person id="2">Susie Q. Public</p:person>
</people>
XML;
$sxe = new SimpleXMLElement($xml);
$namespaces = $sxe->getDocNamespaces();
var_dump($namespaces);
?>
El ejemplo anterior mostrará :
array(1) { ["p"]=> string(21) "http://example.org/ns" }
Ejemplo #2 Trabajo con múltiples espacios de nombres
<?php
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
<p:person t:id="1">John Doe</p:person>
<p:person t:id="2" a:addr="123 Street" xmlns:a="http://example.org/addr">
Susie Q. Public
</p:person>
</people>
XML;
$sxe = new SimpleXMLElement($xml);
$namespaces = $sxe->getDocNamespaces(TRUE);
var_dump($namespaces);
?>
El ejemplo anterior mostrará :
array(3) { ["p"]=> string(21) "http://example.org/ns" ["t"]=> string(23) "http://example.org/test" ["a"]=> string(23) "http://example.org/addr" }