尝试加载不可用文件时避免错误

时间:2011-07-23 13:17:08

标签: php load domdocument

使用php我想从多个网站加载XML文件,并希望在我的其中一个网站关闭时防止错误。我正在使用此代码访问该网址。

function get_xml($url){
 $xmlDoc = new DOMDocument();
 $xmlDoc->load($url); // This is the line causing errors
 $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
 ...

如果$ url中没有可用的xml Feed,我会收到很多错误消息,例如:

警告:DOMDocument :: load():公共标识符

后需要的空格

警告:DOMDocument :: load():SystemLiteral“或'expected

警告:DOMDocument :: load():SYSTEM或PUBLIC,缺少URI

警告:DOMDocument :: load():打开和结束标记不匹配:链接第5行和头

如果Feed不可用,我该怎么做才能阻止$ url尝试加载? 我试过了:

if(file_exists($url)){
$xmlDoc->load('$url');
}

使用fopen和@load的东西,但我很可能错误地使用它们。

2 个答案:

答案 0 :(得分:1)

理论上(如果我没记错的话),你应该能够捕捉到这些错误(所以你自己打电话处理它们,而不是让它们显示出来)使用 libxml 1 函数


我特别想到libxml_use_internal_errors()

  

libxml_use_internal_errors()允许您禁用标准libxml   错误并启用用户错误处理。


1。 libxmlDOMDocument内部使用的库 - SimpleXML,btw

答案 1 :(得分:0)

尝试:

if (!@$xmlDoc->load($url)){
  return FALSE;
}

如果方法get_xml无法加载XML数据,您的函数FALSE将立即返回load