【发布时间】:2014-03-18 13:23:00
【问题描述】:
我正在使用本地的 DTD 文件验证我的 XML。
为此,我正在做:
$xml = $dmsMerrin.'/xml/'.$id.'/conversion.xml';
$dtd = $dmsMerrin.'/style_files/journalpublishing.dtd';
$dom = new DOMDocument();
@$dom->load($xml);
libxml_use_internal_errors(true);
if (@$dom->validate()) {
$htmlDTDError .= "<h2>No Errors Found - The tested file is Valid !</h2>";
}
else {
$errors = libxml_get_errors();
$htmlDTDError .= '<h2>Errors Found ('.count($errors).')</h2><ol>';
foreach ($errors as $error) {
$htmlDTDError .= '<li>'.$error->message.' on line '.$error->line. '</li>';
}
$htmlDTDError .= '</ol>';
libxml_clear_errors();
}
libxml_use_internal_errors(false);
对于 1600 行的 XML,这大约需要 30 秒。
这是平时吗?在我看来应该快得多?
如您所见,我使用的 DTD 位于服务器本地。
有什么想法吗?谢谢。
编辑:通过调试和检查执行时间,我注意到如果我的 xml 有 1600 行或 150 行,它需要相同的时间,所以问题不在于 xml 大小。
【问题讨论】:
-
我看不到你实际在哪里使用你的 dtd?
-
啊,是的,其实我没用,DTD是在xml文件本身设置的。我应该在 PHP 代码中使用它吗?怎么样?
-
"如您所见,我使用的 DTD 在服务器本地。"从您的示例中我看不到这一点。
$dmsMerrin是file:/网址吗?
标签: php xml xml-validation dtd