ホームページ > バックエンド開発 > PHPチュートリアル > SimpleXML を使用して名前空間プレフィックスを持つ SOAP XML を効率的に解析する方法

SimpleXML を使用して名前空間プレフィックスを持つ SOAP XML を効率的に解析する方法

Susan Sarandon
リリース: 2024-11-28 09:22:16
オリジナル
462 人が閲覧しました

How to Efficiently Parse SOAP XML with Namespace Prefixes Using SimpleXML?

SOAP XML を解析する方法: SimpleXML の名前空間プレフィックスを削除する

SOAP XML ドキュメントを解析する場合、名前空間プレフィックスによって simplexml などのライブラリに問題が発生する可能性があります。 。この問題は、次のような XML 応答が発生したときに発生します。

<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>
ログイン後にコピー

次のコードのように、simplexml を使用してこのような XML 文字列を解析しようとすると、空の結果が返されることがよくあります:

$xml = simplexml_load_string($soap_response);
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
foreach ($xml->xpath('//payment') as $item)
{
    print_r($item);
}
ログイン後にコピー

この問題を解決し、名前空間プレフィックスを含む SOAP XML を正常に解析するには、XML を simplexml に渡す前にこれらのプレフィックスを削除するのが簡単ですが効果的な方法です。その方法は次のとおりです。

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

名前空間プレフィックスを削除すると、simplexml による XML の解析が容易になります。結果として得られる SimpleXMLElement オブジェクトには、 の下にネストされた必要なデータが含まれます。そして。この手法を使用すると、必要に応じて、解析された SOAP XML データを簡単に操作し、アクセスできるようになります。

以上がSimpleXML を使用して名前空間プレフィックスを持つ SOAP XML を効率的に解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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