如何从我在 PHP 中作为 soap API 响应获得的 XML 响应中解析值


How to parse a value from an XML response which I got as a soap API response in PHP

我得到了一个XML响应,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.*********.in">
   <SOAP-ENV:Body>
      <ns1:LoginResponse>
         <return>
            <SessionID>3AC46E3F62</SessionID>
            <ResponseCode>0</ResponseCode>
            <ResponseMessage>Successful</ResponseMessage>
         </return>
      </ns1:LoginResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如何使用无法执行此操作 PHP.Im 从此 xml 解析会话 ID 和响应代码。请建议一些方法来做到这一点。

检查一下:如何获取和处理来自 PHP API 的响应并应用print_r(htmlentities($xmldata->asXML()));

这也是:肥皂:信封 SOAP-ENV:信封 PHP

那里的回复可能会对您有所帮助,当然您可以自己编写代码,因为很容易

检查此代码也已经是工作示例(非常接近您的问题):

<?php
$a ='<soap-env:envelope xmlns:ns1="http://v3.core.com.productserve.com/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:body>
    <ns1:getproductlistresponse>
      <oproduct>
        <iid>113133802</iid>
        <icategoryid>270</icategoryid>
        <imerchantid>1547</imerchantid>
        <iadult>0</iadult>
        <sname>The Ashes / 5th Test - England v Australia - Day 1</sname>
        <sawdeeplink>http://www.awin1.com/pclick.php?p=113133802&amp;a=111402&amp;m=1547&amp;platform=cs</sawdeeplink>
        <sawthumburl>http://images.productserve.com/thumb/1547/113133802.jpg</sawthumburl>
        <fprice>119.99</fprice>
      </oproduct>
    </ns1:getproductlistresponse>
  </soap-env:body>
</soap-env:envelope>';

$xml = simplexml_load_string($a);

$ns = $xml->getNamespaces(true);
$soap = $xml->children($ns['soap-env']);
$getproductlistresponse = $soap->body->children($ns['ns1']);
foreach ($getproductlistresponse->children() as $item)
{
  //This example just accesses the iid node but the others are all available.
  echo (string) $item->iid . '<br />';
}
?>