2012-06-25 14 views
0

我使用PHP SOAPSERVER類。PHP soapserver返回更好的可讀聯想陣列

作爲迴應我送聯想PHP數組:

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> 
    ... 

就是這樣SOAP返回可能的(不改變返回類型 - 數組)?怎麼樣?

我剛剛開始使用SOAP,大多數教程都演示如何返回簡單類型,如字符串。

+0

爲什麼要閱讀SOAP消息呢?通常,客戶端將其轉換爲任何適合響應數據的本機結構/類型。 – ThiefMaster

+0

@ThiefMaster,我想使用DOM方法將SOAP消息解析爲XML。它與當前的響應消息結構看起來相當混亂。 – user1463822

+0

呃,使用現有的SOAP客戶端...無論如何,這就是SOAP的樣子。你不能簡單地使用不同的格式。它是標準化的。 – ThiefMaster

回答

5

不發送關聯數組,而是發送一個stdclass對象。

例子:

$return = new stdclass; 
$return->ItemID = 1; 
$return->ItemName = 'foo'; 

return $return; 

然後SOAP結果將只是你想要的方式!

+0

SOAP客戶端在發送對象時使用對象表示法,所以這應該回答OP的問題。您還可以使用典型的對象實例化語法來實例化預定義的類,即「new stdClass()」。 –