Aktueller Standort: Startseite> Neueste Artikel> So analysieren Sie XML -Zeichenfolgen mit XML_Parse

So analysieren Sie XML -Zeichenfolgen mit XML_Parse

M66 2025-05-13

In PHP ist XML_Parse eine der Kernfunktionen, die zur Analyse von XML -Daten verwendet werden. Es kombiniert einen XML -Parser ( xml_parser_create ), um XML -Zeichenfolgen zu analysieren und die Parsing -Ergebnisse durch eine Rückruffunktion zu verarbeiten. In diesem Artikel wird detailliert eingeführt, wie Sie XML_Parse verwenden, um XML -Zeichenfolgen zu analysieren und mögliche Situationen während des Parsens korrekt zu behandeln.

1. Erstellen Sie einen XML -Parser

In PHP müssen wir zunächst eine XML -Parser -Instanz erstellen, die mit XML_PARSER_CREATE () implementiert werden kann:

 <?php
$parser = xml_parser_create();

Diese $ Parser -Variable ist das Ressourcenhandle des XML -Parsers, und anschließende Parsingvorgänge müssen basierend darauf durchgeführt werden.

2. Stellen Sie die Rückruffunktion des Parsers ein

XML Parsing ist ereignisorientiert und wir müssen Rückruffunktionen definieren, um verschiedene Teile von XML-Daten zu verarbeiten. Zum Beispiel können wir definieren, wie wir es verarbeiten, wenn wir das Start -Tag-, End -Tag- und Charakterdaten analysieren.

 function startElement($parser, $name, $attrs) {
    echo "Start Tag: $name\n";
    if (!empty($attrs)) {
        echo "Eigentum:\n";
        foreach ($attrs as $key => $value) {
            echo " - $key: $value\n";
        }
    }
}

function endElement($parser, $name) {
    echo "Ende Tag: $name\n";
}

function characterData($parser, $data) {
    echo "Zeichendaten: " . trim($data) . "\n";
}

Dann assoziieren wir diese Rückruffunktionen dem Parser mit xml_set_element_handler () und xml_set_character_data_handler () :

 xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

3.. XML -Daten analysieren

Jetzt können wir XML -Zeichenfolgen mit xml_parse () analysieren. Zum Beispiel:

 $xmlData = <<<XML
<root>
    <item id="1">Das erste Projekt</item>
    <item id="2">Das zweite Projekt</item>
</root>
XML;

if (!xml_parse($parser, $xmlData, true)) {
    die(sprintf("XML Parsing -Fehler: %s Dabei %d",
        xml_error_string(xml_get_error_code($parser)),
        xml_get_current_line_number($parser)
    ));
}

In diesem Beispiel definieren wir eine XML -Struktur und analysieren sie mit xml_parse () . Wenn das Parsen fehlschlägt, verwenden Sie xml_get_error_code () und xml_error_string (), um die Fehlerinformationen zu erhalten und das Programm zu beenden.

4. Parser -Ressourcen veröffentlichen

Nach der Verwendung des XML -Parsers sollte die Ressource veröffentlicht werden:

 xml_parser_free($parser);

5. Probenausgang

Angenommen, der inhalt von Parsen -XML ist wie folgt:

 <root>
    <item id="1">Das erste Projekt</item>
    <item id="2">Das zweite Projekt</item>
</root>

Nach der Ausführung des Skripts lautet das Ausgabeergebnis wie folgt:

 Start Tag: ROOT
Start Tag: ITEM
Eigentum:
 - ID: 1
Zeichendaten: Das erste Projekt
Ende Tag: ITEM
Start Tag: ITEM
Eigentum:
 - ID: 2
Zeichendaten: Das zweite Projekt
Ende Tag: ITEM
Ende Tag: ROOT

6. FAQs bei XML -Parsen behandeln

6.1 Illegale XML -Daten, die angetroffen wurden

Wenn die von XML_PARSE () analysierten XML -Daten falsch sind, z. B.:

 <root>
    <item>Unbekannte Tags
</root>

Zu diesem Zeitpunkt kehrt XML_PARSE () FALSE zurück und wirft einen Parsenfehler. Sie können die Fehlerinformationen über XML_Error_string () abrufen.

6.2 Umgang mit Streaming -Analyse großer Dateien

Wenn die XML -Datei groß ist, können Sie eine segmentierte Parsen -Methode verwenden:

 $fp = fopen("http://m66.net/example.xml", "r");
while ($data = fread($fp, 4096)) {
    if (!xml_parse($parser, $data, feof($fp))) {
        die(sprintf("XML Parsing -Fehler: %s Dabei %d",
            xml_error_string(xml_get_error_code($parser)),
            xml_get_current_line_number($parser)
        ));
    }
}
fclose($fp);

Auf diese Weise können Probleme beim Speicherüberlauf vermeiden, das durch das Laden der gesamten XML -Datei gleichzeitig geladen wird.

7. Schlussfolgerung

Die Verwendung von XML_Parse zur Analyse von XML -Daten in PHP ist eine effiziente Methode, aber die Rückruffunktion muss korrekt eingestellt werden, um verschiedene Parsing -Ereignisse zu verarbeiten. Darüber hinaus ist die Behandlung von XML -Parsen -Fehlern und eine große Datei -Parsen der Schlüssel zur Verbesserung der Programmrobustheit. Ich hoffe, dieser Artikel kann Ihnen helfen, die XML -Parsing -Funktion von PHP besser zu verstehen und anzuwenden!