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

标签 php xml xpath simplexml

在 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

关于php - 有没有办法通过节点名称获取简单的 XML 子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27741380/

相关文章:

php - fgetcsv 无法读取以 mac 格式的 csv 文件结尾的行,有更好的解决方案吗?

c# - 如何使用 XmlReader 从 XML 中的特定子元素获取值?

xml - 如何运行特定的 phpunit xml 测试套件?

android - RTL-Layout 中忽略准则(Android Constraint-Layout)

xpath - Python 和 Scrapy 不能很好地处理格式错误的 HTML

python - 在 Scrapy 中使用 Xpath 选择段落下方的任何文本

php - 查询在PHP中返回空结果,但在其他情况下工作正常

php - 如何使用perl、php获取图片元数据

php - 选择查询取决于多种可能性

c# - 使用 selenium C# 在一行中单击操作链接(删除、查看、编辑)