Start · Sprachen · PHP · Referenz · xml_get_error_code

xml_get_error_code

Funktion

Gibt den numerischen Fehlercode des letzten Fehlers zurück, der bei einem XML-Parser aufgetreten ist.

seit PHP 4.0.0 Kategorie: xml

Signatur

xml_get_error_code(XMLParser $parser): int

Beschreibung

xml_get_error_code() liefert den Fehlercode des zuletzt aufgetretenen Fehlers im angegebenen XML-Parser. Der Rückgabewert ist eine Ganzzahl, die einer der vordefinierten XML_ERROR_*-Konstanten entspricht (z. B. XML_ERROR_SYNTAX oder XML_ERROR_INVALID_TOKEN).

Die Funktion wird typischerweise nach einem fehlgeschlagenen Aufruf von xml_parse() oder xml_parse_into_struct() eingesetzt, um den genauen Fehlertyp zu ermitteln. In Kombination mit xml_error_string(), xml_get_current_line_number() und xml_get_current_column_number() lassen sich aussagekräftige Fehlermeldungen erzeugen.

Der Fehlercode XML_ERROR_NONE (Wert 0) zeigt an, dass bisher kein Fehler aufgetreten ist. Alle anderen Codes signalisieren einen konkreten Fehler beim Parsen des XML-Dokuments.

Beachte, dass diese Funktionen zur expat-basierten XML-Extension gehören, die für einfaches, ereignisgesteuertes XML-Parsing gedacht ist. Für komplexere Anforderungen empfiehlt sich SimpleXML oder DOMDocument.

Parameter

Name Typ Default Beschreibung
$parser Pflicht XMLParser Eine gültige XML-Parser-Ressource, die zuvor mit xml_parser_create() oder xml_parser_create_ns() erstellt wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt den numerischen Fehlercode des letzten Fehlers zurück. Ist kein Fehler aufgetreten, wird XML_ERROR_NONE (0) zurückgegeben. Der Fehlercode kann mit xml_error_string() in einen lesbaren Text umgewandelt werden.

Beispiele

Fehlercode und -meldung nach fehlgeschlagenem Parsen

<?php
$parser = xml_parser_create();

$ungueltigesXml = '<root><element>Kein schließendes Tag</root>';

if (!xml_parse($parser, $ungueltigesXml, true)) {
    $fehlerCode = xml_get_error_code($parser);
    $fehlerText = xml_error_string($fehlerCode);
    $zeile      = xml_get_current_line_number($parser);
    $spalte     = xml_get_current_column_number($parser);

    echo "Fehlercode : $fehlerCode\n";
    echo "Fehlermeldung: $fehlerText\n";
    echo "Zeile      : $zeile, Spalte: $spalte\n";
} else {
    echo "XML erfolgreich geparst.\n";
}

xml_parser_free($parser);
Fehlercode : 7 Fehlermeldung: mismatched tag Zeile : 1, Spalte: 43

Kein Fehler — Prüfung auf XML_ERROR_NONE

<?php
$parser = xml_parser_create();

$gueltigesXml = '<root><item>Hallo Welt</item></root>';

if (xml_parse($parser, $gueltigesXml, true)) {
    $fehlerCode = xml_get_error_code($parser);

    if ($fehlerCode === XML_ERROR_NONE) {
        echo "Kein Fehler aufgetreten (Fehlercode: $fehlerCode).\n";
    }
} else {
    echo 'Fehler: ' . xml_error_string(xml_get_error_code($parser)) . "\n";
}

xml_parser_free($parser);
Kein Fehler aufgetreten (Fehlercode: 0).

// Wichtig · Fallstricke

Hinweis zur PHP-Version: Ab PHP 8.0.0 akzeptiert die Funktion ein XMLParser-Objekt anstelle der zuvor verwendeten Ressource (resource). Älteren Code, der eine Ressource übergab, muss ggf. angepasst werden, obwohl PHP die Migration transparent handhabt.

Der Fehlercode allein ist oft wenig aussagekräftig. Stets xml_error_string() zusammen mit Zeilen- und Spalteninformation verwenden, um den Fehler korrekt zu lokalisieren und dem Nutzer verständlich zu melden.

Die Funktion gibt immer den Fehlercode des letzten aufgetretenen Fehlers zurück. Bei mehrteiligem Parsing (mehrere xml_parse()-Aufrufe) wird der Code nach einem erfolgreichen Aufruf nicht automatisch zurückgesetzt.