SimpleXMLElement::getDocNamespaces

(PHP 5 >= 5.1.2, PHP 7)

SimpleXMLElement::getDocNamespaces Retorna los namespaces declarados en el documento

Descripción

public SimpleXMLElement::getDocNamespaces ([ bool $recursive = false [, bool $from_root = true ]] ) : array

Retorna los namespaces declarados en el documento

Parámetros

recursive

Si se especifica, retorna todos los namespaces declarados en los nodos padre e hijos. De lo contrario, retorna únicamente el namespace declarado en el nodo raíz.

from_root

Permite comprobar recursivamente espacios de nombres bajo un nodo hijo en lugar de desde la raíz del documento XML.

Valores devueltos

El método getDocNamespaces retorna un array de nombres de namespaces con sus URIs asociadas.

Ejemplos

Ejemplo #1 Obtener los namespaces del documento

<?php

$xml 
= <<<XML
<?xml version="1.0" standalone="yes"?>
<gente xmlns:p="http://example.org/ns">
    <p:persona id="1">John Doe</p:persona>
    <p:persona id="2">Susie Q. Public</p:persona>
</gente>
XML;
 
$sxe = new SimpleXMLElement($xml);

$namespaces $sxe->getDocNamespaces();
var_dump($namespaces);

?>

El resultado del ejemplo sería:

array(1) {
   ["p"]=>
   string(21) "http://example.org/ns"
}

Ejemplo #2 Trabajando con múltiples namespaces

<?php

$xml 
= <<<XML
<?xml version="1.0" standalone="yes"?>
<gente xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:persona t:id="1">John Doe</p:persona>
    <p:persona t:id="2" a:direccion="Calle 123" xmlns:a="http://example.org/addr">
        Susie Q. Public
    </p:person>
</gente>
XML;
 
$sxe = new SimpleXMLElement($xml);

$namespaces $sxe->getDocNamespaces(TRUE);
var_dump($namespaces);

?>

El resultado del ejemplo sería:

array(3) {
  ["p"]=>
  string(21) "http://example.org/ns"
  ["t"]=>
  string(23) "http://example.org/test"
  ["a"]=>
  string(23) "http://example.org/addr"
}

Historial de cambios

Versión Descripción
5.4.0 Se añadió el parámetro from_root.

Ver también