Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将soapxml解析为php_Php_Xml_Soap - Fatal编程技术网

将soapxml解析为php

将soapxml解析为php,php,xml,soap,Php,Xml,Soap,如何解析对PHP的XML响应?我试过几种解决办法,但都不管用。以下是我得到的XML: <soapenv:envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:body> <ns:getrateresponse xmlns:ns="http://services.gts"> <ns:return xmlns:ax25="http://se

如何解析对PHP的XML响应?我试过几种解决办法,但都不管用。以下是我得到的XML:

<soapenv:envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:body>
    <ns:getrateresponse xmlns:ns="http://services.gts">
        <ns:return xmlns:ax25="http://services.gts/xsd" xmlns:ax26="http://model.gts/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax25:RaterResponseAutoQuotes">

          <ax25:carriers xsi:type="ax25:RaterResponseCarriersAutoQuotes">
                <ax25:accessorials xsi:type="ax25:RaterResponseAccessorial">
                    <ax25:aramount>12.66</ax25:aramount>
                    <ax25:accessorialid>22</ax25:accessorialid>
                    <ax25:accessorialname>Fuel</ax25:accessorialname>
                </ax25:accessorials>
                <ax25:ar_final_rate>161.66</ax25:ar_final_rate>
                <ax25:carrier_id>0000087</ax25:carrier_id>
                <ax25:carrier_name>CON-WAY FREIGHT INC</ax25:carrier_name>
                <ax25:service_days>04</ax25:service_days>
            </ax25:carriers>

            <ax25:message>Success</ax25:message>
            <ax25:referencenumber>3184877</ax25:referencenumber>
            <ax25:success>true</ax25:success>
        </ns:return>
    </ns:getrateresponse>
</soapenv:body>
我所关心的只是每个ax25:carriers
ax25:ar\u final\u费率。我也试过了

$result = new SimpleXMLElement($response);
但是回来

object(SimpleXMLElement)#2 (0) { }

这里我们使用
DOMDocument
来提取这些标记中的
textContent


这里我们使用
DOMDocument
来提取这些标记中的
textContent

使用
object(SimpleXMLElement)#2 (0) { }
<?php
ini_set('display_errors', 1);
$string='<soapenv:envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:body>
    <ns:getrateresponse xmlns:ns="http://services.gts">
        <ns:return xmlns:ax25="http://services.gts/xsd" xmlns:ax26="http://model.gts/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax25:RaterResponseAutoQuotes">

          <ax25:carriers xsi:type="ax25:RaterResponseCarriersAutoQuotes">
                <ax25:accessorials xsi:type="ax25:RaterResponseAccessorial">
                    <ax25:aramount>12.66</ax25:aramount>
                    <ax25:accessorialid>22</ax25:accessorialid>
                    <ax25:accessorialname>Fuel</ax25:accessorialname>
                </ax25:accessorials>
                <ax25:ar_final_rate>161.66</ax25:ar_final_rate>
                <ax25:carrier_id>0000087</ax25:carrier_id>
                <ax25:carrier_name>CON-WAY FREIGHT INC</ax25:carrier_name>
                <ax25:service_days>04</ax25:service_days>
            </ax25:carriers>

            <ax25:message>Success</ax25:message>
            <ax25:referencenumber>3184877</ax25:referencenumber>
            <ax25:success>true</ax25:success>
        </ns:return>
    </ns:getrateresponse>
</soapenv:body>
</soapenv:envelope>';

$domDocument = new DOMDocument();
$domDocument->loadXML($string);
$carriers=array();
$results=$domDocument->getElementsByTagNameNS("http://services.gts/xsd", "ar_final_rate");
foreach($results as $result)
{
    array_push($carriers, $result->textContent);
}
print_r($carriers);
Array
(
    [0] => 161.66
)