Aktueller Standort: Startseite> Neueste Artikel> So analysieren Sie XML -Dokumente, die CDATA über XML_Parse enthalten

So analysieren Sie XML -Dokumente, die CDATA über XML_Parse enthalten

M66 2025-05-13

Es gibt viele Möglichkeiten, XML in PHP zu verarbeiten, unter denen XML_Parse eine zugrunde liegende Funktion ist, die für Entwickler geeignet ist, die einen stärkeren Kontrollanforderungen für XML -Strukturen haben. In diesem Artikel wird beschrieben, wie die Funktion xml_parse verwendet wird, um ein XML -Dokument mit einer CDATA -Region zu analysieren.

Was ist ein CDATA -Bereich?

In XML ist <! [CDATA [...]]> eine Anweisung, mit der der Parser angewiesen wird, dass der Inhalt darin nicht als XML -Syntax analysiert werden sollte. Dies ist sehr nützlich für Inhalte, die Sonderzeichen wie HTML oder Skriptcode enthalten.

Beispiel:

 <note>
  <to>Tom</to>
  <message><![CDATA[Hello <b>Tom</b>, welcome to <a href="https://m66.net">our site</a>!]]></message>
</note>

Grundlegende Schritte zum Analyse von XML mit XML_Parse

XML_PARSE ist eine Funktion in PHP zum Parsen von XML -Zeile für Zeile. Um die CDATA -Region zu analysieren, müssen Sie normalerweise xml_parser_create () und eine benutzerdefinierte Prozessorfunktion verwenden.

1. Erstellen Sie einen Parser

 $parser = xml_parser_create();

2. Setzen Sie die Verarbeitungsfunktion

Sie müssen drei Prozessorfunktionen registrieren: das Start -Tag, das End -Tag und den Charakterdatenprozessor.

 $data = [];

function startElement($parser, $name, $attrs) {
    global $data;
    $data['current'] = $name;
}

function endElement($parser, $name) {
    global $data;
    $data['current'] = null;
}

function characterData($parser, $value) {
    global $data;
    if (!isset($data['values'][$data['current']])) {
        $data['values'][$data['current']] = '';
    }
    $data['values'][$data['current']] .= $value;
}

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

3.. XML -Daten analysieren

 $xml = <<<XML
<note>
  <to>Tom</to>
  <message><![CDATA[Hello <b>Tom</b>, welcome to <a href="https://m66.net">our site</a>!]]></message>
</note>
XML;

if (!xml_parse($parser, $xml, true)) {
    die(sprintf("XML Error: %s at line %d",
        xml_error_string(xml_get_error_code($parser)),
        xml_get_current_line_number($parser)));
}
xml_parser_free($parser);

4. Ausgangsergebnis

 print_r($data['values']);

Die Ausgabe wird sein:

 Array
(
    [TO] => Tom
    [MESSAGE] => Hello <b>Tom</b>, welcome to <a href="https://m66.net">our site</a>!
)

Hinweis: Alle Tag -Namen werden in die Kapitalisierung umgewandelt.

Zusammenfassung

XML_PARSE ist eine ereignisgesteuerte XML-Parsing-Methode, die für die Verarbeitung von Komplex- oder großvolumigen XML-Daten geeignet ist. In Fällen, in denen CDATA enthalten ist, müssen Sie nur den CharakterData -Prozessor einrichten, um seinen Inhalt normal zu erfassen. Obwohl es komplexer ist als DOM oder Simplexml, hat es einige Vorteile in Bezug auf Leistung und Flexibilität.

Wenn Ihr Projekt eine hohe Analyse -Effizienz erfordert oder die Verarbeitung von Ereignissen in XML anpassen muss, ist XML_Parse eine gute Wahl.