1

我想针对 XSD 文件验证 XML 并在有任何错误时获取错误。

当我将它与 DOM 但不是 XMLReader 一起使用时,它工作正常。据知道他们都使用 libxml 库,所以我尝试将它用于 XMLReader 但没有运气。

谢谢

DOM(工作正常)

libxml_use_internal_errors(true);

if (! $xml->schemaValidate($xsd_file))
{
    get_errors();
    exit;
}

function get_errors()
{
    $messages   = null;
    $errors     = libxml_get_errors();

    foreach ($errors as $error)
    {
        switch ($error->level)
        {
            case LIBXML_ERR_ERROR:
                $messages .= 'Error ' . $error->code . $error->message;
                break;

            case LIBXML_ERR_WARNING:
                $messages .= 'Warning ' . $error->code . $error->message;
                break;

            case LIBXML_ERR_FATAL:
                $messages .= 'Fatal ' . $error->code . $error->message;
                break;
        }

        echo $messages .= ($error->file) ? $error->file : $error->line;
    }
}

XMLREADER(不适用于上述相同的错误函数)

libxml_use_internal_errors(true);

//This returns true all times whether XML has faults or not
if (! $reader->setSchema($xsd_file))
{
   //This echos nothing whether XML has faults or not
   get_errors();
}
4

1 回答 1

0

设置架构后,我看不到任何 read() 或 isValid() 正在进行,那么您将如何得到错误?看一下文档(我假设是 PHP),它应该可以帮助您了解。

于 2012-07-27T19:00:59.277 回答