检查返回的文件是否为XML

时间:2012-02-09 13:23:00

标签: php xml curl

我需要检查网站输出的返回值。如果有效登录详细信息,则返回XML文件,如果登录详细信息无效,则只返回一个字符串,表示“您输入的ID无效”。

我的问题是我使用此代码进行检查,

$ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $url);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $output = curl_exec($ch);

            curl_close($ch);

            if(simplexml_load_string($output)){
                echo 'Is XML';
             }else{
               echo 'Not XML';
                 }

问题是检查并显示消息,但我收到了这些错误

  

警告:simplexml_load_string()[function.simplexml-load-string]:   实体:第1行:解析器错误:期望开始标记,'<'

中找不到      

警告:simplexml_load_string()[function.simplexml-load-string]:

     

警告:simplexml_load_string()[function.simplexml-load-string]:^   在

有没有办法解决这些错误。我一直在网上搜索过去的一小时没有任何成功。

谢谢

3 个答案:

答案 0 :(得分:13)

检查前5个字符是否等于<?xml,这应该是一个非常好的线索。

if(substr($output, 0, 5) == "<?xml") {
    echo 'Is XML';
} else {
    echo 'Not XML';
}

答案 1 :(得分:9)

$result = simplexml_load_string ($data, 'SimpleXmlElement', LIBXML_NOERROR+LIBXML_ERR_FATAL+LIBXML_ERR_NONE);
if (false == $result) echo 'error';

答案 2 :(得分:1)

也可能是因为返回数据的第一行是空白的 - 在将字符串解析为XML之前尝试$output = trim($output)