SOAP XML の解析
名前空間を使用した XML の解析は、特に simpleXML を使用する場合に混乱を引き起こす可能性があります。
問題ステートメント
与えられたSOAP XML 応答には、SOAP 要素の名前空間プレフィックスが含まれています。 XML を解析するために PHP のコード スニペットが提供されていますが、空の結果が返されます。
正しい解析アプローチ
1 つの簡単な解決策は、XML から名前空間プレフィックスを削除することです。 simpleXML に渡す前のレスポンス:
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $soap_response); $xml = simplexml_load_string($clean_xml);
結果
このコードを使用すると、次の結果が得られます:
SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( [PaymentNotification] => SimpleXMLElement Object ( [payment] => SimpleXMLElement Object ( [uniqueReference] => ESDEUR11039872 [epacsReference] => 74348dc0-cbf0-df11-b725-001ec9e61285 [postingDate] => 2010-11-15T15:19:45 [bankCurrency] => EUR [bankAmount] => 1.00 [appliedCurrency] => EUR [appliedAmount] => 1.00 [countryCode] => ES [bankInformation] => Sean Wood [merchantReference] => ESDEUR11039872 ) ) ) )
これにより、期待どおりに支払い要素とその子要素にアクセスできるようになります。
以上がsimpleXML を使用して PHP で名前空間を含む SOAP XML 応答を正しく解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。