SimpleXMLElement::getNamespaces

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

SimpleXMLElement::getNamespacesBelgede kullanılan isim alanlarını döndürür

Açıklama

public SimpleXMLElement::getNamespaces(bool $ardışık = false): array

Belgede kullanılan isim alanlarını döndürür.

Bağımsız Değişkenler

ardışık

true belirtilirse kök düğüm ve tüm çocuk ve torun düğümlerin isim alanlarını, aksi takdirde sadece kök düğümde kullanılan isim alanlarını döndürür.

Dönen Değerler

İsim alanlarını ve betimleyicilerini içeren bir dizi döndürür.

Örnekler

Örnek 1 - Kullanılan belge isim alanlarının döndürülmesi

<?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);

?>

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note

User Contributed Notes 3 notes

up
6
harry at nospam dot thestorm dot plus dot com
12 years 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 />";
    }
}
?>
up
5
harry at nospam dot thestorm dot plus dot com
12 years 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;
}

?>
To Top