使用PHP从HTTP POST解析XML响应?

时间:2012-03-16 00:09:01

标签: php xml-parsing validation http-post

我在php中有这个HTTP Post函数,它将表单发送到竞争web服务,响应是一个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;
?>

由于

2 个答案:

答案 0 :(得分:0)

您可以使用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

如果响应具有不常见的XML命名空间(就像某些API倾向于这样做),则必须注册命名空间并为其添加所有查询前缀。

$xpath->registerNamespace('ns', 'https://namespace.org/namespace');
echo $xpath->evaluate('string(//ns:Error)');

答案 1 :(得分:0)

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