Maison > développement back-end > tutoriel php > Comment récupérer l'élément « paiement » à partir d'une réponse XML SOAP à l'aide de PHP ?

Comment récupérer l'élément « paiement » à partir d'une réponse XML SOAP à l'aide de PHP ?

DDD
Libérer: 2024-12-07 02:56:12
original
452 Les gens l'ont consulté

How to Retrieve the 'payment' Element from a SOAP XML Response Using PHP?

Analyse SOAP XML

Problème : récupération de l'élément « paiement »

Aperçu du problème :

PHP simplexml_load_string() ne parvient pas à analyser une réponse XML SOAP et à récupérer le 'payment'.

Solution : supprimer les préfixes d'espace de noms

Une méthode efficace pour résoudre ce problème consiste à supprimer les préfixes d'espace de noms de la réponse XML avant d'utiliser simplexml_load_string(). Voici comment procéder :

$your_xml_response = '<SOAP XML here>';
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response);
$xml = simplexml_load_string($clean_xml);
Copier après la connexion

Exemple : Analyse de la réponse SOAP

Pour la réponse XML SOAP fournie :

<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>
        <uniqueReference>ESDEUR11039872</uniqueReference>
        <epacsReference>74348dc0-cbf0-df11-b725-001ec9e61285</epacsReference>
        <postingDate>2010-11-15T15:19:45</postingDate>
        <bankCurrency>EUR</bankCurrency>
        <bankAmount>1.00</bankAmount>
        <appliedCurrency>EUR</appliedCurrency>
        <appliedAmount>1.00</appliedAmount>
        <countryCode>ES</countryCode>
        <bankInformation>Sean Wood</bankInformation>
        <merchantReference>ESDEUR11039872</merchantReference>
      </payment>
    </PaymentNotification>
  </soap:Body>
</soap:Envelope>
Copier après la connexion

Exécution du code :

$your_xml_response = '<!-- Your SOAP XML -->';
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response);
$xml = simplexml_load_string($clean_xml);

foreach ($xml->Body->PaymentNotification->payment as $item) {
    print_r($item);
}
Copier après la connexion

Cela affichera l'élément « paiement » en tant qu'objet SimpleXMLElement, donnant accès à son enfant. éléments.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal