1
我想根据XSD文件验证XML并在出现错误时获取错误。验证XML与XSD的错误
当我在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();
}
问题是我在XML,XSD,解析器等方面都很新,所以虽然我阅读所有这些文档,但对于我来说这是有点困难的。我试图把isValid()其他函数放在一起,但没有任何改变。 Google也一样。我想我需要更多经验或帮助。 – BentCoder 2012-07-27 19:43:52