有没有办法按节点名称获取简单的XML子元素


Is there a way to get simple XML child elements by node name?

在PHP中,是否有一种现有的方法可以通过节点名称(递归)获取一个或多个子元素,或者您必须自己编写一个函数?

例如,这是我的 XML:

<parent>
    <child>
        <grandchild>Jan</grandchild>
        <grandchild>Kees</grandchild>
    </child>
</parent>

我正在寻找一种返回以下内容的方法: 数组( [0] => "一月", [1] => '基斯' )

通过调用类似以下内容的方式:

$grandchildren = $xml->children('grandchild');

根据文档,上述内容确实存在,但仅适用于命名空间。

e:下面接受的答案有效。这就是我运行以测试它的内容。

$xml = '
    <parent>
        <child>
            <grandchild>Jan</grandchild>
            <grandchild>Kees</grandchild>
        </child>
    </parent>';
$L_o_xml = new SimpleXMLElement($xml);
$L_o_child = $L_o_xml->xpath('//grandchild');
foreach( $L_o_child as $hi ){
   print "'n".(string)$hi;
}

简单打印:

Jan
Kees
您可以使用

$xml->xpath()以各种复杂的方式选择节点:

$xml->xpath('//grandchild');   // select all  grandchild  elements in the document