SimpleXMLElement::children

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::childrenEncontra os nós filhos de um dado nó

Descrição

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

Este método encontra os nós filhos que estão dentro de um dado membro. O resultado segue as regras normais de iteração.

Note: Na SimpleXML tornou-se comum adicionar propriedades iterativas à maioria dos métodos. Elas não podem ser visualizadas usando var_dump() ou qualquer outra coisa que possa examinar objetos.

Parâmetros

namespaceOrPrefix

Um namespace XML.

isPrefix

Se o parâmetro isPrefix for definido como true, namespaceOrPrefix será considerado um prefixo. Se definido como false, namespaceOrPrefix será considerado uma URL de um namespace.

Valor Retornado

Retorna um elemento SimpleXMLElement, não importando se o nó tem filhos ou não, a menos que o nó represente um atributo, caso em que null é retornado.

Exemplos

Example #1 Percorrendo um pseudo-array 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'];
        }
    }
}
?>

O exemplo acima produzirá:

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

Example #2 Utilizando namespaces

<?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)

Veja Também