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 />";
}
}
?>SimpleXMLElement::getNamespaces
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
SimpleXMLElement::getNamespaces
Референца за `simplexmlelement.getnamespaces.php` со подобрена типографија и навигација.
SimpleXMLElement::getNamespaces
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SimpleXMLElement::getNamespaces — (PHP 5 >= 5.1.2, PHP 7, PHP 8)
= NULL
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
Параметри
recursive-
Враќа имиња на простори за имиња што се користат во документот
Вратени вредности
На getNamespaces Ако е наведено, враќа сите имиња на простори за имиња што се користат во родителските и детските јазли. Во спротивно, враќа само имиња на простори за имиња што се користат во коренскиот јазол. array методот враќа
Примери
на имиња на простори за имиња со нивните поврзани URI.
<?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);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
array(1) {
["p"]=>
string(21) "http://example.org/ns"
}
Види Исто така
- SimpleXMLElement::getDocNamespaces() - Враќа простори на имиња декларирани во документот
- SimpleXMLElement::registerXPathNamespace() - Создава префикс/ns контекст за следниот XPath прашалник
Белешки од корисници 2 забелешки
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;
}
?>