Aktueller Standort: Startseite> Neueste Artikel> Kombinieren Sie XML_Parse und reguläre Ausdrücke zum Reinigen von Rauscheninformationen in XML -Daten

Kombinieren Sie XML_Parse und reguläre Ausdrücke zum Reinigen von Rauscheninformationen in XML -Daten

M66 2025-04-26

Bei der Verarbeitung von XML -Daten begegnen wir häufig auf einige "Rauschinformationen" - dies können illegale Zeichen, nutzlose Tags, Kommentare oder schmutzige Daten sein, die in CDATA verschachtelt sind. Um die Genauigkeit der Datenanalyse zu gewährleisten, können wir den XML -Inhalt mithilfe der XML_Parse -Funktion von PHP und regulären Ausdrücken zur Löschung dieser Interferenzelemente und die Verbesserung der Parsing -Effizienz und der Datenzuverlässigkeit vorabhalten.

1. Verstehen Sie die Funktion xml_parse

XML_PARSE ist ein von PHP bereitgestellter XML -Parser, der auf dem Expat XML -Parser basiert. Es kann das Segment von XML -Zeichenfolgen nach Segment- und Verarbeitungsknoten durch Rückruffunktionen lesen. XML_Parse hat jedoch extrem hohe Anforderungen für das XML -Format. Wenn es in XML illegale Zeichen oder Formatfehler gibt, kehrt dies direkt zum Scheitern zurück.

Die Beispielnutzung lautet wie folgt:

 $xml_parser = xml_parser_create();

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

$xml_data = file_get_contents("https://m66.net/sample.xml");

if (!xml_parse($xml_parser, $xml_data, true)) {
    die("XML Analyse fehlgeschlagen: " . xml_error_string(xml_get_error_code($xml_parser)));
}

xml_parser_free($xml_parser);

function startElement($parser, $name, $attrs) {
    echo "Element starten: $name\n";
}

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

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

Dieser Code liest Remote XML und verwendet eine Rückruffunktion, um jeden Tag- und Datenknoten Schritt für Schritt zu verarbeiten. Wenn die XML jedoch illegale Zeichen wie Steuerzeichen oder unvollständige CDATA -Knoten enthält, tritt ein analysierendes Versagen auf.

2. Verwenden Sie regelmäßige Ausdrücke, um Geräuschinformationen aufzuräumen

Damit XML_Parse ordnungsgemäß funktioniert, müssen die Geräuschinformationen in der XML vor der Parsen gereinigt werden. Dies kann mit regulären Ausdrücken effizient erfolgen. Gemeinsame "Rauschen" umfassen:

  • Steuerzeichen (wie ASCII 0-31)

  • Illegale HTML-Kommentare (z. B. <! ----> oder Skripte enthalten)

  • Verschachtelte falsche Tags

  • Zusätzliche Weißespace oder Linienpause

Hier sind einige Verarbeitungsbeispiele:

 function cleanXmlData($xml) {
    // Entfernen Sie illegale Steuerzeichen
    $xml = preg_replace('/[^\x09\x0A\x0D\x20-\x7E\xA0-\xFF]/u', '', $xml);
    
    // Kommentarinhalt entfernen
    $xml = preg_replace('/<!--.*?-->/s', '', $xml);

    // Ersetzen Sie das ungültige leere Tag -Format
    $xml = preg_replace('/<(\w+)[^>]*>\s*<\/\1>/', '', $xml);

    // Aufräumen CDATA Skript ausblenden oder Inhalte injizieren in
    $xml = preg_replace('/<!\[CDATA\[(.*?)\]\]>/s', function($matches) {
        $content = $matches[1];
        // Inhalt kann bei Bedarf gefiltert werden,Zum Beispiel entfernen <script>
        $content = preg_replace('/<script.*?>.*?<\/script>/is', '', $content);
        return "<![CDATA[$content]]>";
    }, $xml);

    return $xml;
}

3.. Kombinierte Verwendung von Reinigung und Analyse verwenden

Integrieren Sie die Reinigungsschritte und den XML -Parser:

 $raw_xml = file_get_contents("https://m66.net/raw-feed.xml");

$clean_xml = cleanXmlData($raw_xml);

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

if (!xml_parse($parser, $clean_xml, true)) {
    die("Aufräumen后 XML Analyse fehlgeschlagen: " . xml_error_string(xml_get_error_code($parser)));
}

xml_parser_free($parser);

Auf diese Weise kann auch wenn in der ursprünglichen XML -Datei laute Informationen vorhanden sind, sie kann nach der Reinigung erfolgreich analysiert werden und die Systemstabilität verbessert.

4. Zusammenfassung

Die Kombination der Reinigungsmethoden von XML_Parse und regulären Ausdrücken kann unsere Fehlertoleranz bei der Verarbeitung von XML -Daten erheblich verbessern. Die Regelmäßigkeit kann schwach strukturierte "schmutzige" Daten verarbeiten, während XML_Parse gut strukturierte XML-Dokumente effizient verarbeiten kann. Die Kombination der beiden eignet sich für Systemszenarien wie Protokollanalyse, Datenerfassung, API -Gateways usw., die stark auf XML beruhen.

Denken Sie immer daran: Datenvorverarbeitung ist der erste Schritt zum erfolgreichen Parsen.