php8.5
Home/ Manual/ simplexml / simplexmlelement/ SimpleXMLElement::children

SimpleXMLElement::children

PHP function Edit on GitHub ✎

(PHP 5, PHP 7, PHP 8)

Finds children of given node

Description

SimpleXMLElement::children(string|null $namespaceOrPrefix = null, bool $isPrefix = false): SimpleXMLElement|null

This method finds the children of an element. The result follows normal iteration rules.

Iteration

Parameters

namespaceOrPrefix

An XML namespace.

isPrefix

If isPrefix is true, namespaceOrPrefix will be regarded as a prefix. If false, namespaceOrPrefix will be regarded as a namespace URL.

Return Values

Returns a SimpleXMLElement element, whether the node has children or not, unless the node represents an attribute, in which case null is returned.

Examples

Traversing a children() pseudo-array

php
<?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 above example will output:

output
 The person begot a son who begot a daughter; The person begot a daughter who begot a son; and that son begot a son

Using namespaces

php
<?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));
?>
output
int(0)
int(2)
int(2)
int(0)
int(1)

See Also

Source: reference/simplexml/simplexmlelement/children.xml · from the official PHP manual (php/doc-en)