ホームページ  >  記事  >  バックエンド開発  >  SOAPから返されたXMLをPHPの配列に変換する方法

SOAPから返されたXMLをPHPの配列に変換する方法

PHPz
PHPzオリジナル
2023-03-31 09:09:53964ブラウズ

Web サービスを使用する場合、送信プロトコルとして SOAP を使用すると、結果は XML 形式で返されます。場合によっては、このデータをより便利に使用できるように、この XML データを配列に変換する必要があります。 PHP では、この変換は非常に簡単で、PHP の組み込み関数を使用して実行できます。

1. SOAP 戻り値の XML 形式の例

Web サービスを使用する場合、通常、SOAP プロトコルを通じてリクエストを送信し、XML 形式で戻り値を取得します。 XML 形式で返される結果は複雑になる場合がありますが、いくつかの例で理解できます。次に、SOAP 戻り値の単純な XML 形式の例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php">
  <SOAP-ENV:Body>
    <ns1:response>
      <ns1:result>
        <name>John Smith</name>
        <age>30</age>
        <country>USA</country>
      </ns1:result>
      <ns1:result>
        <name>Alice Jones</name>
        <age>25</age>
        <country>UK</country>
      </ns1:result>
    </ns1:response>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

上記の XML コードには、SOAP 戻り値の例が含まれています。そのルート ノードは <SOAP-ENV:Envelope> で、これには <SOAP-ENV:Body> ノード、<SOAP-ENV:Body&gt ;# が含まれます。 ##このノードには ノードがあり、このノードには 2 つの ノードがあります。各 ノードには、3 つの要素ノード: 、および ## が含まれます。 #。 この XML 戻り値には 2 人の情報が含まれています。このデータを処理しやすくするために、PHP を通じて配列に変換できます。

2. PHP の simplexml_load_string() 関数を使用して XML を配列に変換します

PHP では、組み込みの

simplexml_load_string()

関数を使用して XML を配列に変換できます。配列。上記の XML の例では、次の PHP コードを使用して配列に変換できます。 <pre class="brush:php;toolbar:false">$xmlstr = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:ns1=&quot;http://localhost/webservice.php&quot;&gt;   &lt;SOAP-ENV:Body&gt;     &lt;ns1:response&gt;       &lt;ns1:result&gt;         &lt;name&gt;John Smith&lt;/name&gt;         &lt;age&gt;30&lt;/age&gt;         &lt;country&gt;USA&lt;/country&gt;       &lt;/ns1:result&gt;       &lt;ns1:result&gt;         &lt;name&gt;Alice Jones&lt;/name&gt;         &lt;age&gt;25&lt;/age&gt;         &lt;country&gt;UK&lt;/country&gt;       &lt;/ns1:result&gt;     &lt;/ns1:response&gt;   &lt;/SOAP-ENV:Body&gt; &lt;/SOAP-ENV:Envelope&gt;'; $xml = simplexml_load_string($xmlstr); $json = json_encode($xml); $array = json_decode($json, true); print_r($array);</pre> 上記のコードでは、まず XML 文字列を

$xmlstr

変数にコピーします。次に、simplexml_load_string() 関数を使用して、それを PHP オブジェクトに変換します。次に、json_encode() 関数と json_decode() 関数を使用して PHP オブジェクトを配列に変換し、最後に print_r() 関数を使用して出力します。配列から外します。 このコードを実行すると、次の出力が得られます。

Array
(
    [response] => Array
        (
            [result] => Array
                (
                    [0] => Array
                        (
                            [name] => John Smith
                            [age] => 30
                            [country] => USA
                        )
                    [1] => Array
                        (
                            [name] => Alice Jones
                            [age] => 25
                            [country] => UK
                        )
                )
        )
)

上記の出力は、SOAP によって返された XML 変換されたデータを含む PHP 配列を示しています。このデータは処理に非常に便利に使用できます。

3. PHP の SimpleXMLElement クラスを使用する

上記の

simplexml_load_string()

関数に加えて、PHP の組み込み SimpleXMLElement クラスを使用して XML を配列。 次のコードでは、PHP の組み込み file_get_contents() 関数を使用して、指定された URL から XML データを取得します。

$xmlstr = file_get_contents('http://localhost/webservice.php');

$xml = new SimpleXMLElement($xmlstr);
$json = json_encode($xml);
$array = json_decode($json, true);

print_r($array);

上記のコードでは、最初に

file_get_contents( )

関数は XML データを取得し、PHP の組み込み SimpleXMLElement クラスを使用して XML を PHP オブジェクトに変換します。次に、json_encode() 関数と json_decode() 関数を使用して PHP オブジェクトを配列に変換し、最後に print_r() 関数を使用して出力します。結果が出ます。 上記のコードは前の例と非常に似ていますが、唯一の違いは、SimpleXMLElement クラスを使用して XML をオブジェクトに変換することです。変換後、このデータを配列のように使用できます。

概要

この記事では、PHP の組み込み関数を使用して、SOAP から返された XML データを配列に変換する方法を紹介します。これらの手法により、Web サービスの戻り値を簡単に使用できるようになり、開発と統合が迅速化されます。 simplexml_load_string() 関数を使用するか SimpleXMLElement クラスを使用するかに関係なく、XML を PHP 配列に簡単に変換できます。

以上がSOAPから返されたXMLをPHPの配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。