downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

SimpleXMLElement::registerXPathNamespace> <SimpleXMLElement::getName
[edit] Last updated: Fri, 24 May 2013

view this page in

SimpleXMLElement::getNamespaces

(PHP 5 >= 5.1.2)

SimpleXMLElement::getNamespaces Retourne les espaces de noms utilisés dans un document

Description

public array SimpleXMLElement::getNamespaces ([ bool $recursive = false ] )

Retourne les espaces de noms utilisés dans un document.

Liste de paramètres

recursive

Si spécifié, retourne tous les espaces de noms utilisés dans les noeuds parents et enfants. Sinon, retourne uniquement les espaces de noms utilisés dans le noeud racine.

Valeurs de retour

La méthode getNamespaces retourne un tableau d'espaces de noms avec leurs URL associés.

Exemples

Exemple #1 Récupère les espaces de noms utilisés dans un document

<?php

$xml 
= <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <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->getNamespaces(true);
var_dump($namespaces);

?>

L'exemple ci-dessus va afficher :

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

Voir aussi



add a note add a note User Contributed Notes SimpleXMLElement::getNamespaces - [2 notes]
up
1
harry at nospam dot thestorm dot plus dot com
1 year ago
To read a namespace node you have to use the children method.

<?php

$xml
= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:person id="1">John Doe</p:person>
    <p:person id="2">Susie Q. Public</p:person>
</people>
XML;

$sxe = new SimpleXMLElement($xml);

$ns = $sxe->getNamespaces(true);

$child = $sxe->children($ns['p']);

foreach (
$child->person as $out_ns)
{
    echo
$out_ns;
}

?>
up
0
harry at nospam dot thestorm dot plus dot com
1 year ago
If the namespace is nested in the xml, then you will have to loop over the nodes.

<?php




$xml
= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
  <people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
      <items>
            <title>This is a test of namespaces and my patience</title>
            <p:person id="1">John Doe</p:person>
            <p:person id="2">Susie Q. Public</p:person>
            <p:person id="1">Fish Man</p:person>
      </items>
  </people>
XML;




$sxe = new SimpleXMLElement($xml);




foreach (
$sxe as $out_ns)
{
    $ns = $out_ns->getNamespaces(true);




    $child = $out_ns->children($ns['p']);




    foreach ($child as $out)
    {
        echo $out . "<br />";
    }
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites