Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie von Soap zurückgegebenes XML in ein Array in PHP
Wenn wir Webdienste nutzen und SOAP als Übertragungsprotokoll verwenden, erhalten wir ein Rückgabeergebnis im XML-Format. Manchmal müssen wir diese XML-Daten in ein Array konvertieren, damit wir diese Daten bequemer verwenden können. In PHP ist diese Konvertierung sehr einfach und wir können sie mithilfe der in PHP integrierten Funktionen durchführen.
1. Beispiel für einen SOAP-Rückgabewert im XML-Format
Bei der Verwendung von Webdiensten senden wir normalerweise Anfragen über das SOAP-Protokoll und erhalten ein Rückgabeergebnis im XML-Format. Die zurückgegebenen Ergebnisse im XML-Format können komplex sein, aber wir können es anhand einiger Beispiele verstehen. Das Folgende ist ein einfaches XML-Formatbeispiel für einen SOAP-Rückgabewert:
<?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>
Der obige XML-Code enthält ein Beispiel für einen SOAP-Rückgabewert. Sein Wurzelknoten ist <SOAP-ENV:Envelope>
, der einen <SOAP-ENV:Body>
-Knoten enthält, <SOAP-ENV Es gibt einen <code><ns1:response>
-Knoten im :Body>-Knoten, und es gibt zwei <ns1:result>
-Knoten in diesem Knoten. Jeder <ns1:result>
-Knoten enthält drei Elementknoten: <name>
, <age>
und <country> ;
. <SOAP-ENV:Envelope>
,其中包含了一个<SOAP-ENV:Body>
节点,<SOAP-ENV:Body>
节点里面有一个<ns1:response>
节点,这个节点里面有两个<ns1:result>
节点。每个<ns1:result>
节点包含了三个元素节点:<name>
、<age>
和<country>
。
这个XML返回值包含了两个人的信息,我们可以通过PHP将它转换成一个数组,方便我们处理这些数据。
二、使用PHP的simplexml_load_string()函数转换XML为数组
在PHP中,我们可以使用内置的simplexml_load_string()
函数将XML转化为数组。在上面的XML例子中,我们可以使用以下PHP代码将它转为数组:
$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);
在上面的代码中,我们首先将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 ) ) ) )
上面的输出展示了一个PHP数组,其中包含了SOAP返回的XML转化后的数据。我们可以非常方便地使用这些数据进行处理。
三、使用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()
simplexml_load_string()
verwenden, um XML in ein Array zu konvertieren. Im obigen XML-Beispiel können wir es mit dem folgenden PHP-Code in ein Array konvertieren: rrreee
Im obigen Code kopieren wir zuerst die XML-Zeichenfolge in die Variable$xmlstr
und verwenden dann den simplexml_load_string() konvertiert es in ein PHP-Objekt. Als nächstes verwenden wir die Funktionen json_encode()
und json_decode()
, um das PHP-Objekt in ein Array zu konvertieren, und verwenden schließlich print_r()
Funktion zum Ausdrucken dieses Arrays. 🎜🎜Führen Sie diesen Code aus, wir erhalten die folgende Ausgabe: 🎜rrreee🎜Die obige Ausgabe zeigt ein PHP-Array, das die von SOAP zurückgegebenen XML-transformierten Daten enthält. Diese Daten können wir sehr komfortabel für die Bearbeitung nutzen. 🎜🎜3. Verwenden Sie die SimpleXMLElement-Klasse von PHP🎜🎜Zusätzlich zur oben erwähnten Funktion simplexml_load_string()
können wir auch die in PHP integrierte SimpleXMLElement-Klasse verwenden, um XML in ein Array zu konvertieren. 🎜🎜Im folgenden Code verwenden wir die in PHP integrierte Funktion file_get_contents(), um XML-Daten von der angegebenen URL abzurufen: 🎜rrreee🎜Im obigen Code verwenden wir zunächst die Funktion file_get_contents()
, um Rufen Sie die XML-Daten ab und verwenden Sie dann die in PHP integrierte SimpleXMLElement-Klasse, um das XML in ein PHP-Objekt zu konvertieren. Als nächstes verwenden wir die Funktionen json_encode()
und json_decode()
, um das PHP-Objekt in ein Array zu konvertieren, und verwenden schließlich print_r()
Funktion zum Ausdrucken des Ergebnisses. 🎜🎜Der obige Code ist dem vorherigen Beispiel sehr ähnlich. Der einzige Unterschied besteht darin, dass wir die SimpleXMLElement-Klasse verwenden, um XML in Objekte zu konvertieren. Nach der Konvertierung können wir diese Daten wie ein Array verwenden. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie Sie die in PHP integrierten Funktionen verwenden, um die von SOAP zurückgegebenen XML-Daten in ein Array zu konvertieren. Diese Techniken können es uns erleichtern, den Rückgabewert des Webservices zu nutzen, wodurch unsere Entwicklung und Integration beschleunigt wird. Ob mit der Funktion simplexml_load_string() oder der Klasse SimpleXMLElement, wir können XML problemlos in ein PHP-Array konvertieren. 🎜Das obige ist der detaillierte Inhalt vonSo konvertieren Sie von Soap zurückgegebenes XML in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!