ホームページ > バックエンド開発 > PHPチュートリアル > 名前空間プレフィックスの問題を回避するために、PHP で SOAP XML 応答を効率的に解析するにはどうすればよいですか?

名前空間プレフィックスの問題を回避するために、PHP で SOAP XML 応答を効率的に解析するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 07:31:10
オリジナル
1005 人が閲覧しました

How Can I Efficiently Parse SOAP XML Responses in PHP to Avoid Namespace Prefix Issues?

SOAP XML の解析: 実用的なソリューション

SOAP XML 応答を解析するタスクは、名前空間プレフィックスが存在するため、困難になる場合があります。これにより、simpleXML などの組み込み PHP 関数を使用する場合、予期しない結果が生じる可能性があります。

課題:

SOAP XML の解析には、名前空間プレフィックスのアドレス指定が必要であり、目的の内容がわかりにくくなる可能性があります。要素。次の SOAP XML 応答を考えてみましょう:

<br><?xml version="1.0"coding="utf-8"?><br><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/"><br> <soap:Body></p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><PaymentNotification xmlns="http://apilistener.envoyservices.com">
  <payment>
    <uniqueReference>ESDEUR11039872</uniqueReference>      
    <epacsReference>74348dc0-cbf0-df11-b725-001ec9e61285</epacsReference>
    <postingDate>2010-11-15T15:19:45</postingDate>
    [Additional payment information]
  </payment>
</PaymentNotification>
ログイン後にコピー



解決策:

効果的な方法の 1 つSOAP XML 解析を簡素化するには、名前空間プレフィックスを削除します。これは、simpleXML に渡す前に XML を変更することで実現できます:

$xml_response = '<SOAP XML here>';
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $xml_response);
$xml = simplexml_load_string($clean_xml);
ログイン後にコピー

これで、名前空間プレフィックスによって引き起こされる問題が発生することなく、目的の 'payment' 要素にアクセスできるようになります:

foreach ($xml->PaymentNotification->payment as $item) {
  print_r($item);
}
ログイン後にコピー

この単純なアプローチでは、「payment」要素とそのすべての子要素およびその値が返されます。

以上が名前空間プレフィックスの問題を回避するために、PHP で SOAP XML 応答を効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート