# SimpleXMLElement::children

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::children — Encuentra los hijos del nodo dado

### Descripción

public SimpleXMLElement::children(string `$ns` = ?, bool `$is_prefix` = `false`): SimpleXMLElement

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.

### Parámetros

`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.

### Valores devueltos

Devuelve un elemento SimpleXMLElement, tanto si el nodo tiene hijos o no.

### Historial de cambios

Versión | Descripción
--- | ---
5.2.0 | Se añade el parámetro opcional `is_prefix`.

### Ejemplos

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)

### Notas

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.

### Ver también

- SimpleXMLElement::count() - Cuenta los hijos de un elemento
- count() - Cuenta todos los elementos de un array o algo de un objeto