我打電話一個SOAP服務器的方法,並且響應包括以下XML標籤:PHP SoapClient的XSI:類型響應
<SelctedSupplements>
<Supplement xsi:type="PerRoomSupplement" suppId="1000680" suppName="Upgrade" supptType="4" suppIsMandatory="true" suppChargeType="Included" price="0.00" publishPrice="0.00"/>
</SelctedSupplements>
我得到的結果如下:
object(stdClass)#156 (1) {
["Supplement"]=>
object(stdClass)#157 (7) {
["suppId"]=> int(1000680)
["suppName"]=> string(7) "Upgrade"
["supptType"]=> int(4)
["suppIsMandatory"]=> bool(true)
["suppChargeType"]=> string(8) "Included"
["price"]=> string(4) "0.00"
["publishPrice"]=> string(4) "0.00"
}
}
因此,所有的屬性都在那裏,除了XSI:類型=「PerRoomSupplement」。我如何獲得補充標籤的xsi:類型?我是否必須獲取最後的XML響應並通過XML庫解析它?
我提出的問題之前,我做了一些google搜索,並找到一種方法來完成我想,這可能不是理想的答案,但我想要做什麼。這萬一別人用了同樣的問題掙扎:
我知道可能的類型的補充標籤要麼PerRoomSupplement或PerPersonSupplement。我所做的是創建兩個類與這些名字,然後SOAP響應類映射到我的PHP類。這樣一來,我可以很容易地知道補充劑(通過使用get_class功能)
class PerRoomSupplement{}
class PerPersonSupplement{}
$client = new SoapClient($url, array("classmap" => array(
"PerRoomSupplement" => "PerRoomSupplement",
"PerPersonSupplement" => "PerPersonSupplement"
)));
感謝,