У меня есть два файла, один из которых - xml, а другой - xsd, теперь я хочу проверить xml-файл по схеме xsd, пройдя каждый тег и, в конце концов, переписав теги, которые проходят проверку, в новый xml-файл.
<?php
function libxml_display_error($error)
{
$return = "<br/>\n";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$return .= "<b>Warning $error->code</b>: ";
break;
case LIBXML_ERR_ERROR:
$return .= "<b>Error $error->code</b>: ";
break;
case LIBXML_ERR_FATAL:
$return .= "<b>Fatal Error $error->code</b>: ";
break;
}
$return .= trim($error->message);
if ($error->file) {
$return .= " in <b>$error->file</b>";
}
$return .= " on line <b>$error->line</b>\n";
return $return;
}
function libxml_display_errors() {
$errors = libxml_get_errors();
foreach ($errors as $error) {
print libxml_display_error($error);
}
libxml_clear_errors();
}
// Enable user error handling
libxml_use_internal_errors(true);
$xml = new DOMDocument();
$xml->load('example.xml');
if (!$xml->schemaValidate('example.xsd')) {
print '<b>DOMDocument::schemaValidate() Generated Errors!</b>';
libxml_display_errors();
}else{
var_dump($xml);
}
Вышеприведенный код выводится только в том случае, если весь XML-файл действителен, существует ли способ проверки элементов, например, если некоторые элементы проходят проверку на достоверность, то мы перезаписываем действительные элементы в другой XML-файл?