【问题标题】:Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML'致命错误:未捕获的异常“异常”,消息“字符串无法解析为 XML”
【发布时间】:2023-03-26 02:35:01
【问题描述】:

我正在使用 PHP 5 并尝试使用 cURL 从网页获取货币汇率。

检索我调用的内容:

$html = curl_exec($ch);

这会正确显示页面。但是,当我尝试使用以下方法将其格式化为 XML 时:

$xml = new SimpleXMLElement($html);

大量警告以“致命错误:未捕获的异常 'Exception' 和消息 'String 无法解析为 XML'”结尾显示

我用过stripslashes($html),关闭了magic_qoutes...

请帮助我找到解决方案,过去 2 天我一直被这个问题困扰。

另外请注意,页面中嵌入了 JavaScript。这是不允许创建 XML 的 JavaScript 吗?

谢谢

【问题讨论】:

  • 问题是:你的目标是什么? afaik SimpleXML 类需要有效的结构。由于您收到这些错误,我可以想象该网站无效。你已经检查过这个了吗?你怎么能想在你的 XML 中包含 JS?
  • 感谢您的宝贵时间。我的目标是从货币兑换网站提取数据,这就是目标......该网站是`thecurrencyclub.co.uk/currency-exchange-rates-all-band.do`,它看起来格式很好......就JS而言,我是curl新手,所以我想知道如果这个 JS 不允许创建 XML。 P.S JS 不需要
  • 我对你可能会得到的性能损失一无所知,但这里有一个简单的 dom 解析,我使用 simplehtmldom.sourceforge.net/manual.htm 对于大多数事情来说,这更容易处理。无论如何:对于复杂的 XML 作品,您应该尝试使用 SimpleXML
  • 您尝试抓取的寻呼机不是 XML。也许你应该研究一下 HTML DOM 解析...sourceforge.net/projects/simplehtmldom
  • 感谢您抽出时间 Malachi,我发现页面的 XML 格式不正确,我通过手动提取特定选项卡下的数据来相应地更改了解决方案。

标签: php xml curl


【解决方案1】:

如果您不想读取 xml 数据,请按照这些步骤操作,

$xmlURL = "你的 xml url / 文件名放在这里";

try {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $xmlURL);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-type: text/xml'
    ));
    $content = curl_exec($ch);
    $error   = curl_error($ch);
    curl_close($ch);
    $obj = new SimpleXMLElement($content);
    echo "<pre>";
    var_dump($obj);
    echo "</pre>"; 
}
catch(Exception $e){
    var_dump($e);exit;
}

您将获得整个 XML 文件的数组格式。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多