SimpleXML 抛出警告 - 如何捕获?

发布于 2024-12-12 19:53:25 字数 809 浏览 0 评论 0原文

我在确定 simplexml_load_string() 发生了什么时遇到了一些麻烦,我正在使用下面的代码来呈现一些 XML....当我运行此代码时,我收到如下错误消息:

Message: simplexml_load_string() [function.simplexml-load-string]: Entity: line 94: parser error : Opening and ending tag mismatch: meta line 15 and head

Any ideas on我怎样才能捕捉到这些警告? libxml_get_errors 没有影响。

                $response = simplexml_load_string($response);
                var_dump($response);
                if (count(libxml_get_errors()) > 0) {
                    print_r(libxml_get_errors());
                }

                if (is_object($response)) { //returns true when warnings are thrown
                    //process response
                } else {
                    //record error
                }

I'm having some trouble determining what's going on with simplexml_load_string() I'm using the below code to render some XML.... when I run this code I get error messages like:

Message: simplexml_load_string() [function.simplexml-load-string]: Entity: line 94: parser error : Opening and ending tag mismatch: meta line 15 and head

Any ideas on how I can catch these warnings? libxml_get_errors has no affect.

                $response = simplexml_load_string($response);
                var_dump($response);
                if (count(libxml_get_errors()) > 0) {
                    print_r(libxml_get_errors());
                }

                if (is_object($response)) { //returns true when warnings are thrown
                    //process response
                } else {
                    //record error
                }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疯到世界奔溃 2024-12-19 19:53:26

其他解决方案,在 PHP 中,您可以使用错误控制运算符(@)忽略任何错误消息,在这种情况下:

$data = @simplexml_load_string($xml);
if ($data === false) { // catch error!
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}

检查此文档:http://php.net/manual/en /language.operators.errorcontrol.php

祝你好运!

Other solution, in PHP you can ignore any error messages usign the error control operator(@), in this case:

$data = @simplexml_load_string($xml);
if ($data === false) { // catch error!
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}

Check this doc: http://php.net/manual/en/language.operators.errorcontrol.php

Good luck!

于我来说 2024-12-19 19:53:26

在我的情况下,共享 XML 的服务器将其 http 更改为 https。因此,我们正在下载旧路径 XML 文件,在本例中该文件已“损坏”。这就是我们出现错误的原因。

XML 文件加载完美,因为我没有注意到 https 问题(浏览器重定向)。

In my situation server which was sharing XML changed their http to https. Because of that we were downloading old path XML file, which in this case was "corrupted". That is why we had the error.

XML files was loading perfectly because of that i didn't noticed https problem ( browser redirect ).

灵芸 2024-12-19 19:53:25
libxml_use_internal_errors(true); // !!!

$elem = simplexml_load_string($xml);
if($elem !== false)
{
    // Process XML structure here
}
else
{
    foreach(libxml_get_errors() as $error)
    {
        error_log('Error parsing XML file ' . $file . ': ' . $error->message);
    }
}
libxml_use_internal_errors(true); // !!!

$elem = simplexml_load_string($xml);
if($elem !== false)
{
    // Process XML structure here
}
else
{
    foreach(libxml_get_errors() as $error)
    {
        error_log('Error parsing XML file ' . $file . ': ' . $error->message);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文