簡體   English   中英

將 Soap XML 轉換為 PHP 數組

[英]convert Soap XML into PHP array

我正在嘗試創建一個soap 請求,並且需要將soap xml 轉換為一個php 數組。 但我陷入了無法弄清楚如何正確設置數組屬性的位置。 我對肥皂很陌生,很好的解釋將不勝感激。 這是我到目前為止所做的。

我想創造什么

<arg0>
    <ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:type="ns2:FamilyCoverType">
        <ns2:abc>1978-04-03</ns2:abc>
        <ns2:def>1980-04-03</ns2:def>
        <ns2:pqr>2016-04-10</ns2:pqr>
        <ns2:xyz>2016-05-03</ns2:xyz>
    </ns2:coverType>
</arg0>

我的數組

$data = array(
        'arg0' => array(
            'coverType' => array(
                'abc' => $abc,
                'def' => $def,
                'pqr' => $pqr,
                'xyz' => $xyz,
            )
        )
    );

一切都很好,除了

xsi:type="ns2:FamilyCoverType"

如何在我的數組中設置上述屬性? 請幫助。

我強烈建議您使用 WSDL 到 php 生成器,例如PackageGenerator,因為您根本不知道如何構建您的請求。 如果您將 Eclipse PDT 或任何其他好的 IDE 與生成的 PHP SDK 一起使用,您將在幾秒鍾內發送請求。 此外,您將非常輕松地處理響應,因為您已經知道 PHP 對象,因為它們會在 SDK 中作為 PHP 類生成。

經過兩個忙碌的星期,我終於找到了解決方案。 所以我在這里發布我的答案,以便有人可以節省他的時間。

我們可以很容易地做上面這樣的事情,

$param = new \SoapVar('
           <arg0>
               <ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:FamilyCoverType">
                   <ns2:abc>' . $data['abc'] . '</ns2:abc>
                    <ns2:def>' . $data['def'] . '</ns2:def>
                    <ns2:pqr>' . $data['pqr'] . '</ns2:pqr>
                    <ns2:xyz>' . $data['xyz'] . '</ns2:xyz>
               </ns2:coverType>
           </arg0>', XSD_ANYXML);

然后我們可以得到這樣的響應,

$response = $client->your_calling_function($param);

就目前看來,

XSD_ANYXML

是關鍵。

如果有人仍然遇到問題,我真的很樂意提供幫助。 不要猶豫尋求幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM