用PHP解析来自HTTP POST的XML响应?

用PHP解析来自HTTP POST的XML响应?,php,xml-parsing,validation,http-post,Php,Xml Parsing,Validation,Http Post,我在php中有一个HTTP Post函数,它向竞争网站服务发送一个表单,响应是一个XML,它提供了进一步的详细信息,如果输入成功与否,我如何解析结果以捕获状态字段并向用户提供进一步的反馈 以下是使用的代码: <?php $url = "...webserviceurl..."; $body = "userName=".$_POST["username"]."&password=".........; $ch = curl_init(); curl_setopt($ch, CURL

我在php中有一个HTTP Post函数,它向竞争网站服务发送一个表单,响应是一个XML,它提供了进一步的详细信息,如果输入成功与否,我如何解析结果以捕获状态字段并向用户提供进一步的反馈

以下是使用的代码:

<?php
$url = "...webserviceurl...";
$body = "userName=".$_POST["username"]."&password=".........;
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-      urlencoded")); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
//curl_setopt($ch, CURLOPT_POST, 1);  
$result = curl_exec ($ch); 
curl_close ($ch); 
print $result;
?>


谢谢

您可以使用PHP DOMDocument库和DOMXpath库在XML上运行xpath查询:

$dom = new DOMDocument();
$dom->loadXML($result);

$xpath = new DOMXpath($dom);
echo $xpath->evaluate('string(//Error)'); // echo contents of <Error> ... </Error> node

PHP中内置了一些选项。试试这个:

您可以使用SimpleXML或XML解析器解析XML。嗨,狼王,谢谢你的回复。它工作不正常,没有显示任何内容,尝试了许多字段,但没有捕获任何内容。我也无法阻止“$result=curl_exec($ch);”在浏览器窗口中弹出!!!!有没有办法防止curl_exec弹出?将此添加到您的代码中:curl_setopt($ch,CURLOPT_RETURNTRANSFER,true)以阻止它出现在屏幕上。非常好,这解决了弹出问题,谢谢King,这是一个桥,还有两个桥:)好的,我能够将XML捕获到一个变量中并打印它的结果:“$xml=simplexml\u load\u字符串($result);“这转换成了一个数组,但不知道如何仅获取状态代码。嗨,Cale,谢谢你的回复,我尝试了,但没有捕获任何内容,基本上我尝试了这个”$xml=simplexml\u load\u string($result);“然后尝试回显结果,但没有结果!它返回一个对象,因此您可以使用print\r输出结果。”。
$xpath->registerNamespace('ns', 'https://namespace.org/namespace');
echo $xpath->evaluate('string(//ns:Error)');