(PHP 5 >= 5.0.1, PHP 7)
SimpleXMLElement::children — Encuentra los hijos del nodo dado
Este método encuentra el hijo de un elemento. El resultado cumple las reglas normales de iteración.
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.
ns
Un nombre de espacio XML.
is_prefix
Si is_prefix
es TRUE
,
ns
será considerado como un prefijo. Si es FALSE
ns
será considerado como un espacio de nombres
URL.
Devuelve un elemento SimpleXMLElement, tanto si el nodo tiene hijos o no.
Versión | Descripción |
---|---|
5.2.0 |
Se añade el parámetro opcional is_prefix .
|
Ejemplo #1 Recorre el pseudo-array children()
<?php
$xml = new SimpleXMLElement(
'<persona>
<hijo rol="hijo">
<hijo rol="hija"/>
</hijo>
<hijo rol="hija">
<hijo rol="hijo">
<hijo rol="hijo"/>
</hijo>
</hijo>
</persona>');
foreach ($xml->children() as $segunda_gen) {
echo 'La persona engendra un/a ' . $segunda_gen['role'];
foreach ($second_gen->children() as $tercera_gen) {
echo ' quien engendra un/a ' . $tercera_gen['role'] . ';';
foreach ($tercera_gen->children() as $cuarta_gen) {
echo ' y ese/a ' . $tercera_gen['role'] .
' engendra un/a ' . $cuarta_gen['role'];
}
}
}
?>
El resultado del ejemplo sería:
La persona engendra un/a hijo quien engendra un/a hija; La persona engendra un/a hija quien engendra a un/a hijo; y ese/a hijo engendra un/a hijo
Ejemplo #2 Usando espacio 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)
SimpleXMLElement::children() devuleve un nodo de objeto no impotando si el nodo actuali tiene un hijo o no. Use SimpleXMLElement::count() en el valor retornado para comprobar si hay algún hijo. Como en PHP 5.3.0, SimpleXMLElement::count() puede usarse en su lugar.