You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何通过大括号获取SimpleXMLElement对象指定路径的XML值?

根因说明

PHP 的对象动态属性访问语法$obj->{$property}仅支持将变量内容作为单个属性名查找,不会自动解析字符串中->代表的多层级属性路径,因此你直接把拼接好的路径字符串放在大括号里的写法无法生效。

实现方案

你可以将动态路径拆分后逐层遍历XML对象获取目标值,代码示例如下:

// 你的动态路径,从数据库取出的格式为 test->test_test
$xml_path = 'test->test_test';
// 按分隔符拆分得到节点名数组
$node_list = explode('->', $xml_path);
// 初始化当前节点为根XML对象
$current_node = $xml_obj;

foreach ($node_list as $node_name) {
    // 逐层访问子节点
    $current_node = $current_node->{$node_name};
}

// 最终取值需要强转为string,避免直接操作SimpleXMLElement对象带来的问题
$target_value = (string)$current_node;
echo $target_value;

报错说明

你遇到的Serialization of 'SimpleXMLElement' is not allowed报错,本质是尝试对SimpleXMLElement类型的对象直接执行序列化操作(比如存入session、调用serialize方法等)导致的。上述方案中我们最终将节点内容强转为字符串类型,即可规避该错误。

内容的提问来源于stack exchange,提问作者yfain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:45:10