Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menghuraikan SOAP XML dengan Cekap dengan Awalan Ruang Nama Menggunakan SimpleXML?
Cara Menghuraikan SOAP XML: Melucutkan Awalan Ruang Nama untuk SimpleXML
Apabila menghuraikan dokumen SOAP XML, awalan ruang nama boleh memberikan cabaran untuk perpustakaan seperti simplexml . Isu ini timbul apabila menghadapi respons XML yang serupa dengan yang berikut:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <PaymentNotification xmlns="http://apilistener.envoyservices.com"> <payment> <!-- Payment data --> </payment> </PaymentNotification> </soap:Body> </soap:Envelope>
Percubaan untuk menghuraikan rentetan XML sedemikian menggunakan simplexml, seperti kod berikut, selalunya menghasilkan keputusan kosong:
$xml = simplexml_load_string($soap_response); $xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/'); foreach ($xml->xpath('//payment') as $item) { print_r($item); }
Untuk menyelesaikan isu ini dan berjaya menghuraikan SOAP XML dengan awalan ruang nama, pendekatan yang mudah namun berkesan adalah untuk menanggalkan awalan ini sebelum menghantar XML ke simplexml. Begini caranya:
$your_xml_response = '<Your XML here>'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml);
Dengan mengalih keluar awalan ruang nama, XML menjadi lebih mudah untuk simplexml dihuraikan. Objek SimpleXMLElement yang terhasil akan mengandungi data yang dikehendaki bersarang di bawah
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan SOAP XML dengan Cekap dengan Awalan Ruang Nama Menggunakan SimpleXML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!