Ich walidating meine XML mit einer DTD-Datei, die ich lokal habe.Wie beschleunigt man die XML-DTD-Validierung mit PHP?
Dafür ich tue:
$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);
Und das dauert etwa 30 Sekunden für eine XML mit 1600 Zeilen.
Ist das eine übliche Zeit? Sollte meiner Meinung nach viel schneller sein?
Wie Sie sehen können, ist die DTD, die ich verwende, lokal auf dem Server.
Irgendeine Idee? Vielen Dank.
EDIT: Durch Debuggen und Überprüfen der Ausführungszeit habe ich festgestellt, dass es die gleiche Zeit dauert, wenn mein XML 1600 Zeilen oder 150 Zeilen hat, so ist das Problem nicht die XML-Größe.
Ich kann nicht sehen, wo Sie Ihre dtd tatsächlich verwenden? –
Ah ja, ich benutze es nicht tatsächlich, die DTD ist in der XML-Datei selbst eingerichtet. Sollte ich es im PHP-Code verwenden? Wie ? –
"Wie Sie sehen können, ist die DTD, die ich verwende, lokal auf dem Server." Das kann ich an deinem Beispiel nicht sehen. Ist '$ dmsMerrin' eine' Datei:/'URL? – Joe