SimpleXMLElement::children

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::childrenBusca los hijos de un nodo dado

Descripción

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

Este método busca los hijos de un elemento. El resultado sigue las reglas de la iteración normal.

Nota: SimpleXML ha desarrollado una regla para el añadido de propiedades iterativas a la mayoría de métodos. No pueden ser examinados usando var_dump() ni con cualquier otra función que examine objetos.

Parámetros

namespaceOrPrefix

Un espacio de nombres XML.

isPrefix

Si isPrefix vale true, namespaceOrPrefix será considerado como un prefijo. Si vale false, namespaceOrPrefix será considerado como una URL hacia un espacio de nombres.

Valores devueltos

Devuelve un elemento SimpleXMLElement si el nodo tiene un hijo o no, excepto si el nodo representa un atributo, en cuyo caso se devuelve null.

Ejemplos

Ejemplo #1 Recorrido de un 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'];
}
}
}
?>

El resultado del ejemplo sería:

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

Ejemplo #2 Uso de espacios de nombres

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

Ver también