使用 PHP 检查远程文件是不是是格式正确的 XML

Posted

技术标签:

【中文标题】使用 PHP 检查远程文件是不是是格式正确的 XML【英文标题】: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(谢谢)现在正在编辑...... 【参考方案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 时会引发警告......它没有失败

以上是关于使用 PHP 检查远程文件是不是是格式正确的 XML的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 检查远程文件是不是存在?

如何使用 PHP 检查远程文件是不是存在?

php 验证(检查)日期格式是否正确

Android 使用其 URL 检查文件是不是存在于远程服务器中

PHP - 检查 CSV 文件是不是被锁定以供其他用户修改

PHP 实时获取文件大小