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