SimpleXMLElement::children

(PHP 5, PHP 7, PHP 8)

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

Описание

public SimpleXMLElement::children(?string $namespaceOrPrefix = null, bool $isPrefix = false): ?SimpleXMLElement

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

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

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

namespaceOrPrefix

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

isPrefix

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

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

Возвращает элемент SimpleXMLElement, даже если узел не имеет дочерних элементов, если узел не представляет атрибут, в этом случае функция возвращает null.

Примеры

Пример #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::count() - Подсчитывает количество дочерних элементов у текущего элемента
  • count() - Подсчитывает количество элементов в массиве или в объекте Countable