PHP SimpleXMLElement::getDocNamespaces() 方法返回文档中声明的命名空间。
语法
public SimpleXMLElement::getDocNamespaces(recursive, fromRoot)
参数
recursive | 可选。 如果设置为 true,则返回父节点和子节点中声明的所有命名空间。否则,仅返回根节点中声明的命名空间。默认值为 false。 |
fromRoot | 可选。 如果设置为 false,则允许递归检查子节点下的命名空间,而不是从 XML 文档的根开始。默认值为 true。 |
返回值
返回命名空间名称及其关联 URI 的数组。
示例:获取文档命名空间
下面的示例显示了 SimpleXMLElement::getDocNamespaces() 方法的用法。
<?php
$xmlstr = <<<XML
<userlist xmlns:p="http://example.com/test">
<p:user id="John123">
<name>John Smith</name>
<city>New York</city>
<phone>+1-8054098000</phone>
</p:user>
<p:user id="Marry2015">
<name>Marry G.</name>
<city>London</city>
<phone>+33-147996101</phone>
</p:user>
</userlist>
XML;
$xml = new SimpleXMLElement($xmlstr);
$namespaces = $xml->getDocNamespaces();
var_dump($namespaces);
?>
上述代码的输出将是:
array(1) {
["p"]=>
string(24) "http://example.com/test"
}
示例:使用多个命名空间
再考虑一个示例,该示例演示了如何工作使用此函数时具有多个命名空间。
<?php
$xmlstr = <<<XML
<userlist xmlns:p="http: //example.com/test1" xmlns:t="http://example.com/test2">
<p:user id="John123">
<name>John Smith</name>
<city>New York</city>
<phone xmlns:ph="http://example.com/phone">+1-8054098000</phone>
</p:user>
<t:user id="Marry2015">
<name>Marry G.</name>
<city>London</city>
<phone xmlns:ph="http://example.com/phone">+33-147996101</phone>
</t:user>
</userlist>
XML;
$xml = new SimpleXMLElement($xmlstr);
$namespaces = $xml->getDocNamespaces(true);
var_dump($namespaces);
?>
上述代码的输出将是:
array(3) {
["p"]=>
string(24) "http://example.com/test1"
["t"]=>
string(24) "http://example.com/test2"
["ph"]=>
string(24) "http://example.com/phone"
}