SimpleXMLElement::children

(PHP 5, PHP 7)

SimpleXMLElement::childrenFindet Kindelemente des gegebenen Knotens

Beschreibung

public SimpleXMLElement::children ([ string $ns [, bool $is_prefix = FALSE ]] ) : SimpleXMLElement

Die Methode findet Kinder eines Elements. Das Ergebnis entspricht den normalen Iterierungsregeln.

Hinweis: SimpleXML definiert für die meisten Methoden Regeln für das Hinzufügen von iterativen Eigenschaften. Diese können weder mit var_dump() oder auf andere Weise angezeigt werden.

Parameter-Liste

ns

Ein XML Namensraum.

is_prefix

Ist is_prefix gleich TRUE, dann wird ns als Prefix interpretiert. Ist es FALSE, dann wird ns als Namensraum-URL interpretiert.

Rückgabewerte

Gibt ein SimpleXMLElement Objekt zurück, unabhängig davon, ob der Knoten Kindknoten hat oder nicht.

Changelog

Version Beschreibung
5.2.0 Der optionale Parameter is_prefix wurde hinzugefügt.

Beispiele

Beispiel #1 Durch ein children() Pseudo-Array traversieren

<?php
$xml 
= new SimpleXMLElement(
'<person>
 <child role="Sohn">
  <child role="Tochter"/>
 </child>
 <child role="Tochter">
  <child role="Sohn">
   <child role="Sohn"/>
  </child>
 </child>
</person>'
);

foreach (
$xml->children() as $second_gen) {
    echo 
' Die Person zeugte eine/n ' $second_gen['role'];

    foreach (
$second_gen->children() as $third_gen) {
        echo 
', die/der eine/n ' $third_gen['role'] . ' zeugte;';

        foreach (
$third_gen->children() as $fourth_gen) {
            echo 
' und diese/r ' $third_gen['role'] .
                
' zeugte eine/n ' $fourth_gen['role'];
        }
    }
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

 Die Person zeugte eine/n Sohn, die/der eine/n Tochter zeugte; Die Person zeugte
 eine/n Tochter, die/der eine/n Sohn zeugte; und diese/r Sohn zeugte eine/n Sohn

Beispiel #2 Arbeiten mit Namensräumen

<?php
$xml 
'<example xmlns:foo="my.foo.urn">
  <foo:a>Apfel</foo:a>
  <foo:b>Banane</foo:b>
  <c>Kirsche</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)

Anmerkungen

SimpleXMLElement::children() gibt ein Knoten-Objekt, unabhängig davon, ob der Knoten Kindknoten hat oder nicht. count() kann auf den Rückgabewert angewendet werden, um zu prüfen, ob Kindknoten existieren. Von PHP 5.3.0 an kann statt dessen SimpleXMLElement::count() verwendet werden.

Siehe auch