如何检查 simpleXML 是否为空
how to check if simpleXML is null
所以,我构建了一个包含 multi curl 的脚本来验证 XML 并从更多 url 中提取 $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 个 link 而其中一个不是 XML 文件,脚本将停止。
错误:
[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 文件的完整源代码),我必须做出哪些选择才能继续?
您可以使用 try catch 块来处理异常。
try {
$xml = new SimpleXMLElement($data);
//XML is valid
...
} catch(Exception $e) {
//XML is invalid
}
所以,我构建了一个包含 multi curl 的脚本来验证 XML 并从更多 url 中提取 $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 个 link 而其中一个不是 XML 文件,脚本将停止。
错误:
[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 文件的完整源代码),我必须做出哪些选择才能继续?
您可以使用 try catch 块来处理异常。
try {
$xml = new SimpleXMLElement($data);
//XML is valid
...
} catch(Exception $e) {
//XML is invalid
}