Wie kann ich detaillierte Fehlerinformationen erhalten, wenn Sie XML analysieren, während ich das DOM beibehält?

StackOverflow https://stackoverflow.com/questions/1016993

  •  06-07-2019
  •  | 
  •  

Frage

Ich erstelle ein Webformular, in dem Administratoren auf meiner Website einem Textbereich XML hinzufügen und es senden können, um in einer Datenbanktabelle gespeichert zu werden, aber ich bin ein wenig verwirrt über die beste Methode zum Parsen des XML.

Das PHP -Skript muss die XML analysieren und wenn es irgendwelche Parse -Fehler gibt, sollte es die Fehlermeldung und Zeile/Spalte zurückgeben, wobei der Parser an den Administrator anhielt, der das Formular übermittelt hat. Nach dem Parsen muss es auf das DOM zugreifen, um mehrere Überprüfungen für die Existenz von Knoten und Attributen mithilfe von XPath auszuführen.

Wenn ich benutze xml_create_parser() und xml_parse(), Ich kann die detaillierten Fehlerinformationen erhalten, nach denen ich nachgekommen bin, wenn Falsch zurückgegeben wird. Ich kann jedoch nicht auf das DOM der XML zugreifen, nachdem ich sie analysiert habe. Wenn ich benutze DOMDocument::loadXML(), Nach dem, was ich gelesen habe, wirft es keine Ausnahmen für Parsefehler aus, sondern liefert sie nur zum PHP -Protokoll.

Wäre es ein großartiger Performance -Hit, wenn ich es zum ersten Mal ausprobiert hätte xml_parse() Und wenn das erfolgreich ist, rennen Sie DOMDocument::loadXML(), In Anbetracht der Dateien sind meist kleiner als 10 KB, einige sind 10-20 KB? Weiß jemand einen besseren Weg?

War es hilfreich?

Lösung

Sie können aktivieren libxml_use_internal_errors und dann -Wif Domdocument :: load () fehlgeschlagen die detaillierten Fehlermeldungen mit libxml_get_errors ()

<?php
$xml = '<a>
  <b>xyz</b>
  <c>
</a>';

libxml_use_internal_errors(true);
$doc = new DOMDocument;
if ( !$doc->loadxml($xml) ) {
  $errors = libxml_get_errors();
  var_dump($errors);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top