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

使用PHP从SOAP API响应的SimpleXML中提取MenuItemDefinitions字段值

实现方法

你返回的结果中MenuItemDefinitions字段本身是一段独立的XML字符串,需要先提取这段内容做二次解析,之后就可以正常提取指定字段,完整的后续处理代码如下:

// 从已有解析结果中获取配置响应节点
$configRes = $res->GetConfigurationInfoResponse->configInfoResponse;

// 先判断接口请求结果是否正常
if (strval($configRes->OperationalResult->Success) !== 'true') {
    exit('接口调用失败:' . strval($configRes->OperationalResult->ErrorMessage));
}

// 提取MenuItemDefinitions中嵌套的XML字符串,二次解析为SimpleXML对象
$menuXmlStr = strval($configRes->MenuItemDefinitions);
$menuList = simplexml_load_string($menuXmlStr);

// 遍历所有菜品条目,提取需要的字段
$menuData = [];
foreach ($menuList->DbMenuItemDefinition as $item) {
    $menuData[] = [
        '菜品ID' => strval($item->MenuItemDefID),
        '菜品名称' => strval($item->Name1->StringText),
        '菜品分类ID' => strval($item->MenuItemMasterID),
        '是否售罄' => strval($item->OutOfMenuItem)
        // 可根据需求自行添加其他需要提取的字段,字段名和XML内节点名一致即可
    ];
}

// 打印测试结果
print_r($menuData);

注意要点

  • SimpleXML返回的节点默认是SimpleXMLElement对象,用strval()转成字符串后再做后续存储或逻辑处理,避免出现类型错误
  • 要提取其他字段直接对应MenuItemDefinitions内部XML的节点名取值即可,比如要获取打印类编号就取strval($item->PrintClassObjNum)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:54:03