php soapserver返回可读性更好的关联数组
我正在使用PHP SOAPSERVER类 作为响应,我将发送关联php数组:php soapserver返回可读性更好的关联数组,php,soap,soapserver,Php,Soap,Soapserver,我正在使用PHP SOAPSERVER类 作为响应,我将发送关联php数组: function getItems() { ... $items[] = Array("itemID" =>$itemID,"itemName"=>$itemName); return $items; } SOAP返回如下所示: ... <Items> <item type="Map"> <item> <
function getItems()
{
...
$items[] = Array("itemID" =>$itemID,"itemName"=>$itemName);
return $items;
}
SOAP返回如下所示:
...
<Items>
<item type="Map">
<item>
<key type="string">
itemID
</key>
<value type="string">
17558
</value>
</item>
<item>
<key type="string">
itemName
</key>
<value type="string">
I-17558
</value>
</item>
</item>
</Items>
...
...
<Items>
<item>
<itemID>17558</itemID>
<itemName>I-17558</itemName>
</item>
<item>
<itemID>17559</itemID>
<itemName>I-17559</itemName>
</item>
</Items>
...
。。。
项目ID
17558
项目名称
I-17558
...
这样的回报对于人类来说是很难分析的(考虑到更大的数组)。
首选形式如下:
...
<Items>
<item type="Map">
<item>
<key type="string">
itemID
</key>
<value type="string">
17558
</value>
</item>
<item>
<key type="string">
itemName
</key>
<value type="string">
I-17558
</value>
</item>
</item>
</Items>
...
...
<Items>
<item>
<itemID>17558</itemID>
<itemName>I-17558</itemName>
</item>
<item>
<itemID>17559</itemID>
<itemName>I-17559</itemName>
</item>
</Items>
...
。。。
17558
I-17558
17559
I-17559
...
这样的SOAP返回是否可能(不改变返回类型-数组)?怎么做
我刚刚开始使用SOAP,大多数教程都演示了如何返回字符串等简单类型 不发送关联数组,而是发送stdclass对象 例如:
$return = new stdclass;
$return->ItemID = 1;
$return->ItemName = 'foo';
return $return;
然后SOAP结果将是您想要的方式 不发送关联数组,而是发送stdclass对象 例如:
$return = new stdclass;
$return->ItemID = 1;
$return->ItemName = 'foo';
return $return;
然后SOAP结果将是您想要的方式 为什么要阅读SOAP消息?通常,客户端会将其转换为适合响应数据的任何本机结构/类型。@ThiefMaster,我想使用DOM方法将SOAP消息解析为XML。当前的响应消息结构看起来很混乱。呃,使用现有的SOAP客户端。。。不管怎样,肥皂就是这样的。您不能简单地使用不同的格式。这是标准化的。@ThiefMaster,谢谢你提供的信息。一想到能够改变这种结构,我就要命了。你为什么要阅读SOAP消息呢?通常,客户端会将其转换为适合响应数据的任何本机结构/类型。@ThiefMaster,我想使用DOM方法将SOAP消息解析为XML。当前的响应消息结构看起来很混乱。呃,使用现有的SOAP客户端。。。不管怎样,肥皂就是这样的。您不能简单地使用不同的格式。这是标准化的。@ThiefMaster,谢谢你提供的信息。一想到能够改变这种结构,我就心烦意乱。SOAP客户端在发送对象时使用对象表示法,所以这应该能回答OP的问题。您还可以使用典型的对象实例化语法来实例化预定义的类,即“new stdClass()”。SOAP客户端在发送对象时使用对象表示法,因此这应该回答OP的问题。您还可以使用典型的对象实例化语法(即“newstdclass()”)实例化预定义类。