SimpleXMLElement::children
(PHP 5, PHP 7)
SimpleXMLElement::children — Находит дочерние элементы данного узла
Описание
Этот метод находит все дочерние элементы узла. Результат подчиняется стандартным правилам итерации.
Замечание: 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() - Подсчитывает количество элементов массива или чего-либо в объекте