【问题标题】:Check if remote file is well-formed XML with PHP使用 PHP 检查远程文件是否是格式正确的 XML
【发布时间】:2010-10-01 06:15:32
【问题描述】:

我有一个 PHP 驱动的网站,其中包含一个 XML 股票提要,它从 ASP 远程提供(即 XML 提要 URL 的顺序是:http://remote.com/client.asp)。

由于提要经常不可用(我的意思是网站返回 ASP 错误),我想在包含提要之前检查提要是否是格式正确的 XML。我常用的 url_exists 函数不能解决问题,因为即使“出错”,URL 也确实存在。

TIA。

【问题讨论】:

  • 注意:注意术语。您所描述的内容听起来像“格式良好”的 XML,这与“有效”的 XML 不同。
  • 非常正确的cletus(谢谢)现在正在编辑......

标签: php xml feed


【解决方案1】:

使用cURL 获取结果,使用simplexml 检查XML 是否为well-formed

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://remote.com/client.asp");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
if (simplexml_load_string($output)) {
  // well-formed XML
} else {
  // it isn't
}

【讨论】:

  • 谢谢。我已经在使用与此非常相似的东西,正是这个脚本经常引发错误。虽然我用的是simplexml_load_file,但是simplexml_load_string会有区别吗?
  • 我遇到了 SimpleXML 的问题,这很奇怪。显然,来自 URL 的 simplexml_load_file() 和来自 URL 的 cURL 结果的 simplexml_load_string() 可能会得到不同的结果。一个可能会失败,而另一个可能会起作用……这超出了我的想象。现在看看我的 cURL 函数
  • simplexml_load_string 在浏览 html 时会引发警告......它没有失败
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2019-01-18
相关资源
最近更新 更多