如果我有一个需要在PHP中传递的原始XML消息,是否有一种简单的方法可以传递它?
这样的事情:
$xml = '
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>';
$url = 'http://www.myurl.com';
passXmlToSoap($xml,$url);
我不是要使用SOAP来掌握,我只需要使用它来做一个非常简单的事情,所以我希望我可以使用原始XML并尽可能简单地做,即使这可能不是“正确的” “做到这一点的方式。
答案 0 :(得分:1)
检查这个答案: How to parse SOAP XML? 应该有用于解析XML的库,但是这个答案为您提供了一种直接的方法。祝好运 它有效:
$xml = '<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<Name>Yo</Name>
</soap:Header>
<soap:Body>
<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>
</soap:Body>
</soap:Envelope>';
$xml = simplexml_load_string($xml);
print_r( $xml) ;
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
foreach ($xml->xpath('//payment') as $item)
{
print_r($item);
}
答案 1 :(得分:-1)
在任何情况下,您都不应该解析XML响应,也不必传递XML请求来使用SOAP Web服务。
首先,如果您使用本机php SoapClient类,则发送一个对象或数组。然后你收到stdClass对象
其次,你应该使用WSDL到php生成器,它生成必须发送的参数的类。它还生成了与响应对象匹配的类。最后,它生成了发送请求的类。因此,您可以毫无疑问地发送请求并轻松接收响应,而无需处理XML。
尝试PackageGenerator项目。