如何检查simpleXML是否为null

时间:2015-01-04 22:35:30

标签: php xml

所以,我构建了一个包含多个curl的脚本来验证来自更多URL的XML和extrac $ xml-> loc但是当我发现其他不是xml文件的其他内容时我的脚本崩溃(停止)

...multi curl code...
    if($httpcode>=200 && $httpcode<=300) {
        $xml = new SimpleXMLElement($data);
        if($xml !== NULL) {
            foreach ($xml->url as $url_list) {
            $url = $url_list->loc;
            $newurls[] = $url;
            }
        }
    }

如果我放了5个有效的xml网址,但是如果我放了100个链接,其中一个不是XML文件,脚本会停止。

ERROR:

[root@test ~]# php a z2
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /root/a:160
Stack trace:
#0 /root/a(160): SimpleXMLElement->__construct('\r\n<!DOCTYPE htm...')
#1 /root/a(65): mycurl_done('http://southpas...', '\r\n<!DOCTYPE htm...', Resource id #36)
#2 /root/a(175): ThreadsLoop()
#3 {main}
  thrown in /root/a on line 160
[root@test ~]#

似乎我的脚本尝试从html文件中提取信息,因为如果该文件不存在,它会将我重定向到主页(我猜)... 如果SimpleHTMLElement无法解析我的$ data变量(XML文件中的整个源代码),我还需要做什么选择?

1 个答案:

答案 0 :(得分:2)

您可以使用try catch块来处理异常。

try {
  $xml = new SimpleXMLElement($data);
  //XML is valid
  ...
} catch(Exception $e) {
  //XML is invalid
}