PHP
XML

SimpleXMLElement::children

SimpleXMLElement::children

(PHP 5 >= 5.0.1, PHP 7)

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。

例子

Example#1 遍历一个child () 伪数组

<?php $xml = new SimpleXMLElement( '<person>  <child role="son">   <child role="daughter"/>  </child>  <child role="daughter">   <child role="son">    <child role="son"/>   </child>  </child> </person>' foreach ($xml->children() as $second_gen) {     echo ' The person begot a ' . $second_gen['role'];     foreach ($second_gen->children() as $third_gen) {         echo ' who begot a ' . $third_gen['role'] . ';';         foreach ($third_gen->children() as $fourth_gen) {             echo ' and that ' . $third_gen['role'] .                 ' begot a ' . $fourth_gen['role'];         }     } } ?>

上面的例子将输出:

The person begot a son who begot a daughter; The person begot a daughter who begot a son; and that son begot a son

示例#2 使用名称空间

<?php $xml = '<example xmlns:foo="my.foo.urn">   <foo:a>Apple</foo:a>   <foo:b>Banana</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() - 统计数组中的所有元素或对象中的某个元素

← SimpleXMLElement::attributes

SimpleXMLElement::__construct →