simplexml_load_string 抛出“未注册的错误消息”

Posted

技术标签:

【中文标题】simplexml_load_string 抛出“未注册的错误消息”【英文标题】:simplexml_load_string throws "Unregistered error message" 【发布时间】:2019-02-25 22:10:58 【问题描述】:

我不知道这是什么意思,也不知道为什么它继续给我这个错误。

我真的必须为此使用 try 和 catch 吗?

这是我的错误信息:

simplexml_load_string():实体:第 1 行:解析器错误:未注册 错误信息 "exception":"[object] (ErrorException(code: 0): simplexml_load_string():实体:第 1 行:解析器错误:未注册 错误信息在 /home/kjdion45/public_html/app/Http/Controllers/LeadController.php:128)

【问题讨论】:

您能向我们展示一下您尝试加载的 XML 吗? 您看到的消息来自某个错误处理程序(可能是您正在使用的框架/库的一部分),它正在捕获 XML 错误并将它们转换为异常;不幸的是,它不知道如何处理这个消息,所以给你一个相当乱码的默认值。 【参考方案1】:

此错误消息是from libxml,XML 可能有问题。

使用 SimpleXML 时,您可以通过调用 libxml_use_internal_errors() 函数来抑制错误消息。这会在内部存储错误,因此可以使用 libxml_get_errors() 将它们作为数组检索。

<?php
libxml_use_internal_errors(true);
$xml = simplexml_load_string($string);
$errors = libxml_get_errors();
if (count($errors)) 
    echo "There were errors!\n";
    foreach ($errors as $error) 
        echo "Error $error->code on line $error->line\n";
    

【讨论】:

以上是关于simplexml_load_string 抛出“未注册的错误消息”的主要内容,如果未能解决你的问题,请参考以下文章

simplexml_load_string()不会读取标签中带有“soap:”的soap响应[重复]

PHP:SimpleXMLElement() 类和 SimpleXML_load_string() 有啥区别?

simplexml_load_string 转换xml为数组

使用属性包含斜杠的 simplexml_load_string 将 XML 转换为数组

使用 simplexml_load_string 获取 xml 属性 [重复]

simplexml_load_string 函数中的错误