SimpleXMLElement::children

指定したノードの子ノードを見付ける

説明

public SimpleXMLElementnull SimpleXMLElement::children(stringnull $namespaceOrPrefix = null, bool $isPrefix = false)

このメソッドは、指定した要素の子を見つけます。 結果は、通常の反復子により取得できます。

注意: SimpleXML では、ほとんどのメソッドに反復処理を追加するための手順が定義されています。 これらは、var_dump やオブジェクトを評価する他の手段で 見ることはできません。

パラメータ

namespaceOrPrefix

XML 名前空間。

isPrefix

isPrefixtrue の場合は namespaceOrPrefix をプレフィックスとして扱います。false の場合は namespaceOrPrefix を名前空間 URL として扱います。

戻り値

ノードが子を持つかどうかにかかわらず SimpleXMLElement 要素を返します。 ノードが属性である場合は、null を返します。

例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::count
  • count