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

van*_*gen 3 php xml xpath simplexml

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

例如,这是我的 XML:

<parent>
    <child>
        <grandchild>Jan</grandchild>
        <grandchild>Kees</grandchild>
    </child>
</parent>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种返回如下内容的方法: Array( [0] => 'Jan', [1] => 'Kees' )

通过调用类似的东西:

$grandchildren = $xml->children('grandchild');
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

简单打印:

Jan
Kees
Run Code Online (Sandbox Code Playgroud)

JLR*_*she 5

您可以使用$xml->xpath()多种复杂的方式来选择节点:

$xml->xpath('//grandchild');   // select all  grandchild  elements in the document
Run Code Online (Sandbox Code Playgroud)