如何检查字符串是否为有效的 XML,而不在 PHP 中显示警告

2022-08-30 09:09:39

我试图使用此simplexml_load_string()Docs函数检查字符串作为xml的有效性,但它显示了很多警告消息。

如何检查字符串是否为有效的XML,而不禁止显示(开头的@)错误显示超出规范的警告函数


答案 1

使用 libxml_use_internal_errors() 禁止显示所有 XML 错误,然后使用 libxml_get_errors() 循环访问这些错误。

简单的 XML 加载字符串

libxml_use_internal_errors(true);

$doc = simplexml_load_string($xmlstr);
$xml = explode("\n", $xmlstr);

if (!$doc) {
    $errors = libxml_get_errors();

    foreach ($errors as $error) {
        echo display_xml_error($error, $xml);
    }

    libxml_clear_errors();
}

答案 2

文档中

加载文档时处理 XML 错误是一项非常简单的任务。使用该功能,可以在加载文档时禁止显示所有 XML 错误,然后循环访问这些错误。libxml

返回的对象包含多个属性,包括错误的 、和 (位置)。libXMLErrorlibxml_get_errors()messagelinecolumn

libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if (!$sxe) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}

参考资料: libxml_use_internal_errors


推荐