SimpleXML抛出警告 - 如何捕获?

我在使用 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

关于如何捕捉这些警告的任何想法? 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
                }
0
您正在加载无效的.xml文件。也许将问题委托给提供它的人?
额外 作者 FailedDev,

2 答案

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);
    }
}
11
额外
错误处理更糟糕。该警告提供了有关错误的xml源部分的更具体的消息,而不是错误处理可以给出的。后者仅显示列,如果xml源文件未以井格式编码,则很难找到错误部分。
额外 作者 Scott Chu,
此答案不会阻止警告,它只显示有关错误的更多信息。要防止出现此警告,请使用 set_error_handler(),如下所示: stackoverflow.com/a/17012247/204842
额外 作者 Russell G,

在我的情况下,共享XML的服务器将其http更改为https。因为我们正在下载旧的路径XML文件,在这种情况下是“损坏的”。这就是我们遇到错误的原因。

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

0
额外