Bei der Verarbeitung von XML -Dateien in PHP werden häufig Parsenfehler auftreten, insbesondere wenn der XML im Format unvollständig oder falsch ist. Standardmäßig gibt die LIBXML -Erweiterung direkt Fehlermeldungen aus, die zu einer verwirrenden Seitenanzeige oder und undaksempfindlichen Informationen führen können. Um diese Fehler anmutig zu fangen und zu behandeln, liefert PHP die Funktion libxml_use_internal_errors , die es uns ermöglicht, Fehler zu sammeln und eine direkte Ausgabe zu vermeiden, wodurch eine flexiblere Fehlerbehandlung erreicht wird.
In diesem Artikel wird detailliert eingeführt, wie die Funktion libXML_USE_internal_errors verwendet und den Beispielcode kombiniert wird, um zu zeigen, wie Sie XML -Parsing -Fehler in der tatsächlichen Entwicklung fangen und umgehen können.
libxml_use_internal_errors ist eine Funktion in PHP, die den internen Fehlerbehandlungsmechanismus von libxMl aktiviert oder deaktiviert. Nach Aktivierung wird LIBXML nicht direkt Fehler ausgegeben, sondern die Fehlerinformationen speichern. Das Programm kann diese Fehler durch andere Funktionen zur Verarbeitung erhalten.
Funktionsprototyp:
bool libxml_use_internal_errors ([ bool $use_errors = true ] )
Parameter $ Use_errors : Ob die interne Fehlerbehandlung aktiviert werden soll, standardmäßig true .
Rückgabewert: Fehlerbehandlungsstatus (Boolescher Wert) vor dem Anruf.
Wenn die XML -Parsen fehlschlägt, wird der Fehler standardmäßig direkt gedruckt, wodurch das Seitenlayout beschädigt wird und die sorgfältige Kontrolle über den Fehler fehlt.
Nach Verwendung von libxml_use_internal_errors (true) werden Parsing -Fehler nicht direkt ausgegeben, sondern zwischengespeichert. Sie können die Fehlerliste über libxml_get_errors () erhalten und entsprechend Ihren Anforderungen formatieren oder aufzeichnen.
Das folgende Beispiel zeigt, wie Sie libxMl_use_internal_errors verwenden, um XML -Zeichenfolgen zu analysieren und Fehlermeldungen zu erfassen, wenn ein Fehler auftritt:
<?php
// Aktivieren libxml Interne Fehlerbehandlung
libxml_use_internal_errors(true);
// Analysiert werden XML Saite(Falsch geschrieben)
$xmlString = <<<XML
<root>
<item>Example</item
</root>
XML;
// Erstellen Sie eine neue DOMDocument Objekt
$doc = new DOMDocument();
// Versuchen Sie zu laden XML Saite
if (!$doc->loadXML($xmlString)) {
echo "XML Analyse fehlgeschlagen,Die Fehlermeldung lautet wie folgt:<br>";
// Fehlern bekommen und durchqueren
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo displayLibxmlError($error);
}
// Fehlercache löschen
libxml_clear_errors();
} else {
echo "XML Erfolgreiche Analyse!";
}
/**
* Format und Anzeige libxml Fehlermeldung
*
* @param LibXMLError $error
* @return string
*/
function displayLibxmlError($error) {
$return = "<br>";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$return .= "Warning $error->code: ";
break;
case LIBXML_ERR_ERROR:
$return .= "Error $error->code: ";
break;
case LIBXML_ERR_FATAL:
$return .= "Fatal Error $error->code: ";
break;
}
$return .= trim($error->message);
$return .= " on line $error->line";
return $return;
}
?>
Im obigen Code:
Verwenden Sie libxMl_use_internal_errors (true), um die Fehlersammlung zu aktivieren.
Laden Sie XML mit domdocument :: loadxml und wenn es fehlschlägt, rufen Sie libxml_get_errors auf, um einen Fehler zu erhalten.
Format- und Ausgabefehlerinformationen über die benutzerdefinierte Funktion dosidlibXmLerror .
Rufen Sie nach der Parsen libxml_clear_errors () auf, um den Fehlerpuffer zu löschen.
In den tatsächlichen Projekten wird XML hauptsächlich aus Dateien gelesen, und Sie können ähnliche Methoden verwenden:
<?php
libxml_use_internal_errors(true);
$xmlFile = 'https://gitbox.net/example.xml';
$doc = new DOMDocument();
if (!$doc->load($xmlFile)) {
echo "laden XML Datei fehlgeschlagen,Der Fehler ist wie folgt:<br>";
foreach (libxml_get_errors() as $error) {
echo displayLibxmlError($error);
}
libxml_clear_errors();
} else {
echo "XML 文件laden成功。";
}
function displayLibxmlError($error) {
$return = "<br>";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$return .= "Warning $error->code: ";
break;
case LIBXML_ERR_ERROR:
$return .= "Error $error->code: ";
break;
case LIBXML_ERR_FATAL:
$return .= "Fatal Error $error->code: ";
break;
}
$return .= trim($error->message);
$return .= " on line $error->line";
return $return;
}
?>
Ersetzen Sie hier den Domänennamen in der Beispiel -URL durch Gitbox.net , was den Anforderungen entspricht.
libxml_use_internal_errors (true) ist der Schlüssel zum Fangen von XML -Parsenfehlern.
Es wird eine direkte Ausgabe von Fehlermeldungen vermieden, sodass es für die Programmsteuerung und Protokollierung bequem ist.
Das Kombinieren von libxml_get_errors () und libxml_clear_errors () kann Fehlerinformationen effektiv verwalten.
Geeignet für verschiedene Szenarien, in denen XML aus Zeichenfolgen, Dateien oder Remote -Adressen geladen wird.
Wenn Sie die Verwendung dieser Funktion beherrschen, können Entwickler den robusteren und freundlicheren XML -Verarbeitungscode schreiben.