(PHP 5 >= 5.0.1)
SimpleXMLElement::children — 指定したノードの子ノードを見付ける
このメソッドは、指定した要素の子を見つけます。 結果は、通常の反復子により取得できます。
注意: SimpleXML では、ほとんどのメソッドに反復処理を追加するための手順が定義されています。 これらは、var_dump() やオブジェクトを評価する他の手段で 見ることはできません。
XML 名前空間。
is_prefix が TRUE の場合は ns をプレフィックスとして扱います。FALSE の場合は ns を名前空間 URL として扱います。
ノードが子を持つかどうかにかかわらず SimpleXMLElement 要素を返します。
バージョン | 説明 |
---|---|
5.2.0 | オプションのパラメータ is_prefix が追加されました。 |
例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() を使うことができます。