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.
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.
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");
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.
Nach der Verwendung des XML -Parsers sollte die Ressource veröffentlicht werden:
xml_parser_free($parser);
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
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.
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.
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!