我使用XPath和SimpleXML来查找子元素,如下所示:

$child=$file->xpath('//w:child')[0];

如果我要 Select 父项,我可以执行以下操作:

$parent=$child->xpath('..')[0];

但是,如果我想要在树的任何级别找到名为"any_parent"的父母或祖父母,该怎么办?例如:

$any_parent=$child->xpath('any_parent//..')[0];

这个是可能的吗?我希望它相对于$child.然后在树上向上移动并 Select 标签any_parent.有办法做到这一点吗?

推荐答案

是的,这是ancestor轴.

您正在寻找名为any_parent的元素 node :

ancest或者::any_parent

^是轴(ancestor,see all)、两个冒号("::")和 node 测试的名称,这里是元素名称.

帖子主题:Re:Колибри

$any_parent = $child->xpath('ancest或者::any_parent')[0];

Note:由于可以没有也可以有多个,直接访问[0]可能会产生意想不到的结果.

您可以提供默认的null,例如表示找不到任何 node ,而位置测试则表示您特别想要第一个 node :

$any_parent = $child->xpath('ancest或者::grandparent[1]')[0] ?? null;

或者:

[$any_parent] = $child->xpath('ancest或者::grandparent[1]') + [null];

Php相关问答推荐

如何隐藏x轴图表上的值

使用.htaccess将任何路由重定向到文件

Mod_重写子目录中相应的php文件

如何将隐式乘法添加到PHPPEG基本计算器语法中?

WordPress插件和JSON不是有效的响应错误

设置WordPress最近的帖子小部件按修改日期排序

哪里的表现能更好?

在WooCommerce中只允许高价产品的BACS付款

WooCommerce在收据页面获取产品下载URL

文本到语音:不考虑音高值

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

Font Awesome 加载图标未显示在 WooCommerce 管理员列表中

如何在 Woocommerce 中自动删除旧的已完成订单

订单完成后创建 WooCommerce 促销代码

批量更新 WooCommerce 中所有产品的特定自定义字段

调度程序不发送任何消息

计算添加到购物车的点击次数并将其显示在 WooCommerce 管理产品列表中

Google Sheets PHP API - 添加多个选项卡时出现问题

如何通过工厂为点列制作一个假坐标?

同一页面上多个组件的 Livewire 分页问题