SimpleXMLElement::children
(PHP 5, PHP 7)
SimpleXMLElement::children — 指定したノードの子ノードを見付ける
説明
public SimpleXMLElement::children
([ string $ns
[, bool $is_prefix
= false
]] ) : SimpleXMLElement
このメソッドは、指定した要素の子を見つけます。 結果は、通常の反復子により取得できます。
注意:
SimpleXML では、ほとんどのメソッドに反復処理を追加するための手順が定義されています。 これらは、var_dump() やオブジェクトを評価する他の手段で 見ることはできません。
パラメータ
ns
- XML 名前空間。
is_prefix
is_prefix
がtrue
の場合はns
をプレフィックスとして扱います。false
の場合はns
を名前空間 URL として扱います。
例
例1 children()
疑似配列を走査する
<?php$xml = new SimpleXMLElement('<person> <child role="son"> <child role="daughter"/> </child> <child role="daughter"> <child role="son"> <child role="son"/> </child> </child></person>');foreach ($xml->children() as $second_gen) { echo ' The person begot a ' . $second_gen['role']; foreach ($second_gen->children() as $third_gen) { echo ' who begot a ' . $third_gen['role'] . ';'; foreach ($third_gen->children() as $fourth_gen) { echo ' and that ' . $third_gen['role'] . ' begot a ' . $fourth_gen['role']; } }}?>
上の例の出力は以下となります。
The person begot a son who begot a daughter; The person begot a daughter who begot a son; and that son begot a son
例2 名前空間の使用
<?php$xml = '<example xmlns:foo="my.foo.urn"> <foo:a>Apple</foo:a> <foo:b>Banana</foo:b> <c>Cherry</c></example>';$sxe = new SimpleXMLElement($xml);$kids = $sxe->children('foo');var_dump(count($kids));$kids = $sxe->children('foo', TRUE);var_dump(count($kids));$kids = $sxe->children('my.foo.urn');var_dump(count($kids));$kids = $sxe->children('my.foo.urn', TRUE);var_dump(count($kids));$kids = $sxe->children();var_dump(count($kids));?>
int(0) int(2) int(2) int(0) int(1)
注意
SimpleXMLElement::children() は、現在のノードに子があるか否かにかかわらずノードオブジェクトを返します。 子があるかどうかを調べるには、返り値の count() を使います。PHP 5.3.0 以降では、かわりに SimpleXMLElement::count() を使うことができます。