SimpleXMLElement::getDocNamespaces

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

SimpleXMLElement::getDocNamespaces Devuelve los espacios de nombres declarados en un documento

Descripción

public SimpleXMLElement::getDocNamespaces(bool $recursive = false, bool $fromRoot = true): array|false

Devuelve los espacios de nombres declarados en un documento.

Parámetros

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.

Valores devueltos

El método getDocNamespaces devuelve un array de espacios de nombres con sus URL asociadas.

Ejemplos

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 resultado del ejemplo sería:

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 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"
}

Ver también