SimpleXMLElement::children

(PHP 5, PHP 7)

SimpleXMLElement::childrenEncuentra 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