SimpleXMLElement::getDocNamespaces
(PHP 5 >= 5.1.2, PHP 7)
SimpleXMLElement::getDocNamespaces — ドキュメントで宣言されている名前空間を返す
説明
public SimpleXMLElement::getDocNamespaces
([ bool $recursive
= false
[, bool $from_root
= true
]] ) : array
ドキュメントで宣言されている名前空間を返します。
パラメータ
recursive
- 指定されている場合は、親ノードおよび子ノードで宣言されている全ての名前空間を返します。 されていない場合は、ルートノードで宣言されている名前空間のみを返します。
from_root
- XML 文書のルートノードからでなく、子ノードの配下の名前空間を再帰的にチェックできるようにします。
返り値
getDocNamespaces
メソッドは、
名前空間名および関連付けられた URI を配列で返します。
例
例1 ドキュメントの名前空間の取得
<?php$xml = <<<XML<?xml version="1.0" standalone="yes"?><people xmlns:p="http://example.org/ns%22> <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);?>
上の例の出力は以下となります。
array(1) { ["p"]=> string(21) "http://example.org/ns" }
例2 複数の名前空間での動作
<?php$xml = <<<XML<?xml version="1.0" standalone="yes"?><people xmlns:p="http://example.org/ns%22 xmlns:t="http://example.org/test%22> <p:person t:id="1">John Doe</p:person> <p:person t:id="2" a:addr="123 Street" xmlns:a="http://example.org/addr%22> Susie Q. Public </p:person></people>XML; $sxe = new SimpleXMLElement($xml);$namespaces = $sxe->getDocNamespaces(TRUE);var_dump($namespaces);?>
上の例の出力は以下となります。
array(3) { ["p"]=> string(21) "http://example.org/ns" ["t"]=> string(23) "http://example.org/test" ["a"]=> string(23) "http://example.org/addr" }
参考
- SimpleXMLElement::getNamespaces() - ドキュメントで使用している名前空間を返す
- SimpleXMLElement::registerXPathNamespace() - 次の XPath クエリ用の prefix/ns コンテキストを作成する