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 añade propiedades iterativas para casi todos sus métodos. Estas no pueden ser vistas utilizando var_dump() o cualquier otra función que examine los 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 ejemplo anterior mostrará :

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