【问题标题】:Loop through unknown number of xml elements循环遍历未知数量的 xml 元素
【发布时间】:2014-07-16 08:44:16
【问题描述】:

我正在使用 WSDL 文件查询 SOAP Web 服务,有时您会得到一个或多个同名元素。在前一种情况下,PHP 会将其变成单个对象,在后一种情况下,它将成为一个对象数组。

难道没有一种理智的方法可以始终将这些条目放在一个数组中吗?目前,我正在检查是否设置了对象的属性,如果是,我将整个对象放入一个新数组中。然后我就可以一直循环遍历它们,从此不用担心这些。

我觉得我在这里遗漏了一些东西,因为这似乎是一个常见问题。我真的必须自己写一些抽象来处理这个吗?我的意思是,它在 XSD 中,所以 PHP 应该知道可以有多个同名元素并做正常的事情,对吧?

【问题讨论】:

  • 我想说这不是 SOAP 的问题,而是不一致的 API 混合集合和单个对象作为返回类型。代理和包装是应用您喜欢的口味的关键。

标签: php xml soap


【解决方案1】:

Turns out SoapClient 类有一个名为SOAP_SINGLE_ELEMENT_ARRAYS 的选项,它将每个 元素转换为数组。不完全是我想要的,但可能是我自己不做的最好的,对吧?像这样使用:

$client = new SoapClient($wsdl,
    array('features' => SOAP_SINGLE_ELEMENT_ARRAYS)
);

P.S.:SO 的现场搜索很糟糕。在这里搜索和询问后,我在 Google 上找到了这个。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2012-11-23
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多