Поиск дочерних элементов данного узла


(PHP 5 >= 5.0.1)

SimpleXMLElement::childrenПоиск дочерних элементов данного узла

Описание

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

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

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

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

ns

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

is_prefix

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

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

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

Список изменений

Версия Описание
5.2.0 Добавлен не обязательный параметр is_prefix.

Примеры

Пример #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>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() вернет узел объекта в любом случае, даже если текущий узел не имеет потомков. Используя count() для возвращенного значения, можно узнать о существовании потомков. В PHP 5.3.0 вместо этого можно использовать SimpleXMLElement::count().

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

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