Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich die Funktion xml_set_default_handler, um den Kommentarinhalt in XML -Dokumenten zu verarbeiten?

Wie verwendet ich die Funktion xml_set_default_handler, um den Kommentarinhalt in XML -Dokumenten zu verarbeiten?

M66 2025-06-15

Bei der Bearbeitung von XML -Dokumenten in PHP ist eine der häufig verwendeten Parsingmethoden der ereignisgesteuerte Parser -XML -Parser (Expat). Wenn Sie XML mit Expat analysieren, können Sie verschiedene Rückruffunktionen registrieren, um verschiedene XML -Knoten wie Elementstart, Elementende, Zeichendaten usw. zu verarbeiten. Für den Annotationsinhalt in XML verfügt PHPs Expat von PHP standardmäßig nicht um eine spezielle Rückruffunktion, um die Annotationsinformationen zu erfassen.

Was ist xml_set_default_handler?

xml_set_default_handler ist eine Funktion des XML -Parsers in PHP, die eine Standardverarbeitungsfunktion festlegt. Diese Standardverarbeitungsfunktion wird aufgerufen, wenn ein XML -Fragment, das nicht durch eine spezielle Rückruffunktion verarbeitet wird, auftritt. Kommentare, CDATA -Abschnitte usw. auslösen die Standardverarbeitungsfunktion.

Daher können wir den Annotationsinhalt über die xml_set_default_handler erfassen und entsprechend verarbeiten.

Beispielcode Erläuterung

Hier ist ein Beispiel, das zeigt, wie Sie mit XML_Set_Default_handler den Kommentarinhalt in XML verarbeiten:

 <?php
// Erstellen aXMLParser
$parser = xml_parser_create();

// Legen Sie die Standardverarbeitungsfunktion fest,Erfassen Sie Kommentare und andere nicht erfasste Inhalte
xml_set_default_handler($parser, 'defaultHandler');

// Definieren Sie die Standardverarbeitungsfunktion
function defaultHandler($parser, $data) {
    // Der Kommentarinhalt ist normalerweise<!--Anfang,von-->Ende
    if (preg_match('/^<!--(.*)-->$/s', $data, $matches)) {
        echo "Kommentarinhalt: " . trim($matches[1]) . "\n";
    } else {
        // 这里可von处理其他未捕获的Inhalt,wieCDATAWarten
        echo "Inhalt standardmäßig verarbeiten: " . trim($data) . "\n";
    }
}

// LesenXMLDaten
$xml = <<<XML
<?xml version="1.0"?>
<!-- Das istXMLKommentare von -->
<root>
    <child>Inhalt</child>
    <!-- 子元素Kommentare von -->
</root>
XML;

// AnalyseXMLDaten
if (!xml_parse($parser, $xml, true)) {
    die(sprintf("XMLAnalyse错误: %s Im %d OK",
        xml_error_string(xml_get_error_code($parser)),
        xml_get_current_line_number($parser)));
}

// Ressourcen frei machen
xml_parser_free($parser);
?>

Code Beschreibung:

  • Wir haben einen Parser $ Parser erstellt.

  • Die DefaultHandler -Funktion wird mit xml_set_default_handler registriert, um alle Inhalte zu verarbeiten, die nicht von einem bestimmten Rückruf erfasst werden.

  • In der Standardverarbeitungsfunktion wird der reguläre Ausdruck verwendet, um festzustellen, ob die Daten eine Annotation sind, und wenn ja, wird der Annotationsinhalt ausgegeben.

  • Andere Inhalte, die nicht speziell verarbeitet wurden, werden ebenfalls ausgegeben, aber hier konzentrieren wir uns hauptsächlich auf Kommentare.

Beispiel für das Laufergebnis:

 Kommentarinhalt: Das istXMLKommentare von
Inhalt standardmäßig verarbeiten: 

Inhalt standardmäßig verarbeiten: 

Kommentarinhalt: 子元素Kommentare von

Wie Sie sehen können, wird der Kommentarinhalt erfolgreich erfasst und ausgegeben.

Zusammenfassung

Mit xml_set_default_handler können wir Inhalte in XML verarbeiten, die nicht von anderen speziellen Rückernnahmen, einschließlich Kommentaren, erfasst werden. Durch einfache reguläre Übereinstimmung kann der Kommentartext für die entsprechende Verarbeitung extrahiert werden.

Dieser Ansatz eignet sich besonders zum Anpassen von Kommentaren wie Protokollierung, Filterung oder Inhaltsextraktion bei der Verwendung des Expat -Parsers.