我该如何解析这个SOAP响应

时间:2014-12-21 18:15:52

标签: php soap

我使用PHP CURL获得SOAP响应,如下所示

<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:GetRTResponse
            xmlns:ns1="http://advtest.forexpros.com/">
            <GetRTResponse xsi:type="xsd:ArrayOfString">
                <root>
                    <symbol id="53085" lastTimeStamp="1419026361">
                        <data symbol="53085" ask='11474.6' bid='11392.8' other='11433.7' date="12/19/2014 21:59:21.000" change='518.0' changep='4.75' tick="none" />
                    </symbol>
                </root>
            </GetRTResponse>
        </ns1:GetRTResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如何使用PHP从数据中解析bid属性?为什么var_dump会返回string(679)""

2 个答案:

答案 0 :(得分:0)

在PHP中有几种方法,使用SimpleXML或创建DOMDocument,尝试XPath或使用XSLT-Stylesheet或简单的字符串匹配或preg匹配文件...最后2种可能性最差...... 我认为&#34;字符串(679)&#34;说,这个xml是一个长度为679的字符串。

答案 1 :(得分:0)

为什么不使用本机PHP类SoapClient来获取请求然后接收数组或stdClass作为响应? 例如,您可以使用PackageGenerator创建一个PHP包,这样可以简化您发送请求的方式,而无需处理XML请求,因为您将拥有一个PHP对象