Aktueller Standort: Startseite> Neueste Artikel> So erstellen Sie einen benutzerdefinierten Parser in Kombination mit XML_PARSE und XML_PARSER_CREATE

So erstellen Sie einen benutzerdefinierten Parser in Kombination mit XML_PARSE und XML_PARSER_CREATE

M66 2025-05-12

In PHP ist die Verarbeitung von XML -Daten eine der gängigen Aufgaben. PHP bietet eine Vielzahl von Möglichkeiten, XML zu verarbeiten, unter denen XML_PARSE und XML_PARSER_CREATE zwei häufig verwendete Funktionen sind. Diese Funktionen bieten eine ereignisgesteuerte Parsingmethode, sodass Leistung und Effizienz bei der Verarbeitung großer Mengen an XML-Daten besser garantiert werden können.

In diesem Artikel werden wir erläutern, wie Sie XML_PARSE und XML_PARSER_CREATE verwenden, um einen benutzerdefinierten XML -Parser zu erstellen und die XML -Daten, die während der Parsen aufgenommen wurden, korrekt zu verarbeiten.

1. Was sind xml_parse und xml_parser_create ?

  • XML_PARSER_CREATE : Diese Funktion wird verwendet, um einen XML -Parser zu erstellen und eine Parser -Ressource zurückzugeben. Durch diesen Parser kann PHP Daten nach und nach in Dateien oder Zeichenfolgen gemäß der XML -Struktur analysieren.

  • XML_PARSE : Diese Funktion wird verwendet, um Parser zu verarbeiten, die von xml_parser_create erstellt und eingehende XML -Daten analysiert werden. Es kann den XML -Inhalt Schritt für Schritt analysieren und verwandte Ereignisse auslösen (z. B. wenn ein Tag startet, endet oder Textknoten auftreten).

Grammatik:

 xml_parser_create([encoding]);
xml_parse(parser, data[, terminate]);
  • xml_parser_create Wenn beim Erstellen eines Parsers Sie die Codierung angeben (z. B.: UTF-8 , ISO-8859-1 usw.).

  • XML_Parse wird verwendet, um Daten zu analysieren. Jedes Mal, wenn es analysiert wird, verarbeitet es einen XML -Datenblock und verarbeitet ihn über eine Rückruffunktion.

2. Erstellen Sie einen benutzerdefinierten XML -Parser

In PHP können wir XML_PARSER_CREATE verwenden, um einen benutzerdefinierten Parser zu erstellen und verschiedene Ereignisse während des Parsingprozesses zu verarbeiten, indem Sie verschiedene Rückruffunktionen einstellen. Zum Beispiel können wir eine Rückruffunktion einrichten, um das Start -Tag, das End -Tag, den Textinhalt usw. zu verarbeiten.

Beispielcode:

 <?php
// Benutzerdefinierte Rückruffunktion
function startElementHandler($parser, $name, $attrs) {
    echo "Start Tag: $name\n";
    // Druckenkennzeichnungen
    if (!empty($attrs)) {
        echo "Tag -Eigenschaften: " . print_r($attrs, true) . "\n";
    }
}

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

function characterDataHandler($parser, $data) {
    echo "Textdaten: $data\n";
}

// erstellen XML Parser
$parser = xml_parser_create('UTF-8');

// Setzen Sie die Rückruffunktion
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");

// Beispiel XML Daten
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
        <title lang="en">PHP for Beginners</title>
        <author>John Doe</author>
        <price>29.95</price>
    </book>
    <book>
        <title lang="es">PHP para Principiantes</title>
        <author>Juan Pérez</author>
        <price>25.95</price>
    </book>
</bookstore>';

// Analyse XML Daten
if (!xml_parse($parser, $xml_data)) {
    echo "XML Analyse错误: " . xml_error_string(xml_get_error_code($parser)) . "\n";
} else {
    echo "XML DatenAnalyse成功\n";
}

// 释放Parser资源
xml_parser_free($parser);
?>

Analyse:

  • xml_set_element_handler legt die Rückruffunktionen für das Start -Tag und das End -Tag fest, nämlich StartelementHandler bzw. EndelementHandler .

  • xml_set_character_data_handler legt die Rückruffunktion Zeichendatahandler fest, die Textdaten verarbeitet.

  • Bei der Parsen von XML -Daten wird die Rückruffunktion während der Parsen ausgelöst und mit verschiedenen XML -Ereignissen umgehen.

Ausgabe:

 Start Tag: bookstore
Start Tag: book
Start Tag: title
Tag -Eigenschaften: Array
(
    [lang] => en
)
Textdaten: PHP for Beginners
Ende Tag: title
Start Tag: author
Textdaten: John Doe
Ende Tag: author
Start Tag: price
Textdaten: 29.95
Ende Tag: price
Ende Tag: book
Start Tag: book
Start Tag: title
Tag -Eigenschaften: Array
(
    [lang] => es
)
Textdaten: PHP para Principiantes
Ende Tag: title
Start Tag: author
Textdaten: Juan Pérez
Ende Tag: author
Start Tag: price
Textdaten: 25.95
Ende Tag: price
Ende Tag: book
Ende Tag: bookstore
XML DatenAnalyse成功

3.. URL -Daten verarbeiten

Bei der Verarbeitung von XML -Daten müssen manchmal Daten analysieren, die URLs enthalten. Während der Parsen können Sie XML -Daten ähnlich wie folgt begegnen:

 <links>
    <link>http://m66.net/page1</link>
    <link>http://m66.net/page2</link>
</links>

Wenn wir diese URLs während der Parsen erhalten und verarbeiten möchten, können wir diese Links über eine benutzerdefinierte Rückruffunktion extrahieren und manipulieren.

Modifizierter Beispielcode:

 <?php
// Benutzerdefinierte Rückruffunktion
function startElementHandler($parser, $name, $attrs) {
    echo "Start Tag: $name\n";
}

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

function characterDataHandler($parser, $data) {
    // Überprüfen Sie, ob es ist URL
    if (filter_var($data, FILTER_VALIDATE_URL)) {
        echo "Wirksam URL: $data\n";
    } else {
        echo "Textdaten: $data\n";
    }
}

// erstellen XML Parser
$parser = xml_parser_create('UTF-8');

// Setzen Sie die Rückruffunktion
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");

// Beispiel XML Daten
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>
<links>
    <link>http://m66.net/page1</link>
    <link>http://m66.net/page2</link>
</links>';

// Analyse XML Daten
if (!xml_parse($parser, $xml_data)) {
    echo "XML Analyse错误: " . xml_error_string(xml_get_error_code($parser)) . "\n";
} else {
    echo "XML DatenAnalyse成功\n";
}

// 释放Parser资源
xml_parser_free($parser);
?>

Ausgabe:

 Start Tag: links
Start Tag: link
Wirksam URL: http://m66.net/page1
Ende Tag: link
Start Tag: link
Wirksam URL: http://m66.net/page2
Ende Tag: link
Ende Tag: links
XML DatenAnalyse成功

4. Zusammenfassung

Mit XML_PARSER_CREATE und XML_PARSE können wir XML -Daten sehr flexibel analysieren und Callback -Funktionen anpassen, um verschiedene Ereignisse während des Parsens zu verarbeiten. Wenn wir diese Funktionen kombinieren, können wir verschiedene Daten in XML entsprechend den tatsächlichen Anforderungen verarbeiten, einschließlich URLs, Tag -Attributen, Textdaten usw.

Durch die Verwendung benutzerdefinierter Rückruffunktionen können wir verschiedene XML -Elemente und -text verarbeiten, wodurch der Analyseprozess bedienender und flexiblerer wird. Diese ereignisgesteuerte Parsing-Methode eignet sich besonders für Anwendungsszenarien, die die Verarbeitung groß angelegter XML-Daten erfordern.

Hoffentlich hilft Ihnen dieses Tutorial besser zu verstehen, wie Sie XML_PARSE und XML_PARSER_CREAT in PHP verwenden, um benutzerdefinierte XML -Parsers zu erstellen und XML -Daten zu verarbeiten.