SimpleXMLElement::children

(PHP 5, PHP 7)

SimpleXMLElement::childrenНаходит дочерние элементы данного узла

Описание

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

Этот метод находит все дочерние элементы узла. Результат подчиняется стандартным правилам итерации.

Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с использованием var_dump() или каких-либо других средств анализа объектов.

Список параметров

ns

Необязательное пространство имен XML.

is_prefix

Если is_prefix установлен в true, ns будет рассмотрен как префикс. Если false, ns будет рассмотрен как пространство имен URL.

Возвращаемые значения

Возвращает элемент SimpleXMLElement, даже если узел не имеет дочерних элементов.

Примеры

Пример #1 Обход псевдомассива children()

<?php
$xml 
= new SimpleXMLElement(
'<person>
 <child role="сын">
  <child role="дочь"/>
 </child>
 <child role="дочь">
  <child role="сын">
   <child role="сын"/>
  </child>
 </child>
</person>'
);

foreach (
$xml->children() as $second_gen) {
    echo 
' У человека родился(-ась) ' $second_gen['role'];

    foreach (
$second_gen->children() as $third_gen) {
        echo 
', у которого родился(-ась) ' $third_gen['role'] . ';';

        foreach (
$third_gen->children() as $fourth_gen) {
            echo 
' и у ' $third_gen['role'] .
                
' родился(-ась) ' $fourth_gen['role'];
        }
    }
}
?>

Результат выполнения данного примера:

У человека родился(-ась) сын, у которого родился(-ась) дочь; У человека
родился(-ась) дочь, у которого родился(-ась) сын; и у сын родился(-ась) сын

Пример #2 Использование пространства имен

<?php
$xml 
'<example xmlns:foo="my.foo.urn">
  <foo:a>Яблоко</foo:a>
  <foo:b>Банан</foo:b>
  <c>Вишня</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() вернет узел объекта в любом случае, даже если текущий узел не имеет потомков. Используя count() для возвращенного значения, можно узнать о существовании потомков. В PHP 5.3.0 вместо этого можно использовать SimpleXMLElement::count().

Смотрите также

  • SimpleXMLElement::count() - Подсчитывает количество дочерних элементов у текущего элемента
  • count() - Подсчитывает количество элементов массива или чего-либо в объекте