Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menghuraikan SOAP XML dengan Cekap dengan Awalan Ruang Nama Menggunakan SimpleXML?

Bagaimana untuk Menghuraikan SOAP XML dengan Cekap dengan Awalan Ruang Nama Menggunakan SimpleXML?

Susan Sarandon
Susan Sarandonasal
2024-11-28 09:22:16530semak imbas

How to Efficiently Parse SOAP XML with Namespace Prefixes Using 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 dan . Teknik ini membolehkan anda memanipulasi dan mengakses data XML SOAP yang dihuraikan mengikut keperluan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn