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> ;# が含まれます。 ##このノードには
ノードがあり、このノードには 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 = '<?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 = simplexml_load_string($xmlstr);
$json = json_encode($xml);
$array = json_decode($json, true);
print_r($array);</pre>
上記のコードでは、まず XML 文字列を
変数にコピーします。次に、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 サイトの他の関連記事を参照してください。