PHP解析XML内容
这是我的请求发送PHP解析XML内容
$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>
任何想法,只是内容? 谢谢..
鉴于在soapenv:Body
内确实没有什么值得一看的,下面并没有真正显示任何有趣的内容,但应该有所帮助。
$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;
}
对于行回声我得到以下错误信息: - >注意:试图获取非对象的属性 致命错误:调用成员函数getAttribute() – andreas777
RamRaider,当我把$ strxml作为上面的例子你说它的工作原理,但当我从$ strxml = curl_exec($ ch)将它合并到我的代码中时;它不,这是什么? – andreas777
,这取决于你的代码 - 没有看到代码很难说。 – RamRaider
没有真正的内容 - 一个命名空间的空标签是所有 – RamRaider
看到的http://*.com/questions/16412047/parse-xml-namespaces-with-php-simplexml – michi
可能的复制[你如何解析和处理PHP中的HTML/XML?](http://*.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) –