如果XML文件为空,则捕获PHP错误

时间:2012-07-24 15:07:19

标签: php xml error-handling

所以我从XML文件中抓取一些信息,如下所示:

$url = "http://myurl.blah";
$xml = simplexml_load_file($url);

除非有时XML文件是空的,我需要代码优雅地失败,但我似乎无法弄清楚如何捕获PHP错误。我试过这个:

if(isset(simplexml_load_file($url)));
{
    $xml = simplexml_load_file($url);
    /*rest of code using $xml*/
}
else {
    echo "No info avilable.";
}

但它不起作用。我想你不能那样使用ISSET。任何人都知道如何捕获错误?

4 个答案:

答案 0 :(得分:9)

$xml = file_get_contents("http://myurl.blah");
if (trim($xml) == '') {
    die('No content');
}

$xml = simplexml_load_string($xml);

或者,可能稍微提高效率,但不一定推荐,因为它会使错误无效:

$xml = @simplexml_load_file($url);
if (!$xml) {
    die('error');
}

答案 1 :(得分:1)

请勿在此使用isset

// Shutdown errors (I know it's bad)
$xml = @simplexml_load_file($url);

// Check you have fetch a response
if (false !== $xml); {
    //rest of code using $xml
} else {
    echo "No info avilable.";
}

答案 2 :(得分:1)

if (($xml = simplexml_load_file($url)) !== false) {
  // Everything is OK. Use $xml object.
} else {
  // Something has gone wrong!
}

答案 3 :(得分:0)

从PHP手册,错误处理(click here):

var_dump(libxml_use_internal_errors(true));

// load the document
$doc = new DOMDocument;

if (!$doc->load('file.xml')) {
    foreach (libxml_get_errors() as $error) {
        // handle errors here
    }

    libxml_clear_errors();
}