这是我发送请求的方式
$header = "POST 213.207.000.000/services/AmountCharging/v3 HTTP/1.1 \r\n"; $header .= "Content-type: text/xml;charset=UTF-8 \r\n";
$header .= "Content-length: ".strlen($request_xml)." \r\n";
$header .= "Content-transfer-encoding: text \r\n";
$header .= "Connection: Keep-Alive \r\n\r\n";
$header .= $request_xml;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
$strxml = curl_exec($ch);
下面是我的XML响应,使用php我只想抓取<soapenv:Body></soapenv:Body>
<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:chargeAmountResponse xmlns:ns1="http://www.csapi.org/schema/parlayx/payment/amount_charging/v3_1/local"></ns1:chargeAmountResponse>
</soapenv:Body>
</soapenv:Envelope>
有什么想法吗? 谢谢..
答案 0 :(得分:0)
鉴于在$strxml='<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:chargeAmountResponse xmlns:ns1="http://www.csapi.org/schema/parlayx/payment/amount_charging/v3_1/local"></ns1:chargeAmountResponse>
</soapenv:Body>
</soapenv:Envelope>';
$dom=new DOMDocument;
$dom->loadXML( $strxml );
$body=$dom->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/','Body')->item(0);
echo 'Body: '.$body->tagName.', Child: '.$body->childNodes->item(1)->tagName.', Attribute: '.$body->childNodes->item(1)->getAttribute('xmlns:ns1');
Output
------
Body: soapenv:Body, Child: ns1:chargeAmountResponse, Attribute: http://www.csapi.org/schema/parlayx/payment/amount_charging/v3_1/local
update:
-------
Given that it does appear supplying a single line string causes errors
you could aproach it slightly differently.
$col=$dom->getElementsByTagName('*');
foreach( $col as $node ) {
echo 'tag:'.$node->tagName.' value:'.$node->nodeValue.BR;
}
内确实没有什么值得一看,以下内容并没有真正表现出任何有趣但应该有所帮助。
{{1}}