Aktueller Standort: Startseite> Neueste Artikel> Kombinieren Sie XML_Parse und Curl zum Herunterladen und Analysieren von XML -Daten

Kombinieren Sie XML_Parse und Curl zum Herunterladen und Analysieren von XML -Daten

M66 2025-05-13

Bei der täglichen PHP -Entwicklung müssen wir häufig XML -Daten von Remote -Servern erhalten und analysieren. In diesem Artikel wird gezeigt, wie Curl zum Herunterladen von XML -Daten verwendet, den Inhalt in Kombination mit den Funktionen der XML_Parse -Serie analysiert und in eine verfügbare Array -Struktur umwandelt.

1. Vorbereitung: Aktivieren Sie die erforderlichen Erweiterungen

Stellen Sie zunächst sicher, dass die folgenden Erweiterungen in Ihrer PHP -Umgebung aktiviert sind:

  • Curl : Wird verwendet, um Daten aus der Ferne herunterzuladen

  • XML -Parser : Wird verwendet, um XML -Dokumente zu analysieren

Diese beiden Erweiterungen sind standardmäßig für die meisten PHP -Installationspakete, die integriert sind, und erfordern keine zusätzliche Installation.

2. Verwenden Sie Curl, um XML -Daten zu erhalten

Lassen Sie uns zunächst den XML -Inhalt einer Remote -Adresse über Curl herunterladen:

 function fetchXmlData($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $data = curl_exec($ch);

    if (curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
        return false;
    }

    curl_close($ch);
    return $data;
}

// Beispiel URL
$url = 'https://api.m66.net/data/sample.xml';
$xmlContent = fetchXmlData($url);

if ($xmlContent === false) {
    exit('Erhalten XML scheitern');
}

3.. Verwenden Sie XML_Parse, um XML -Daten zu analysieren

Die XML_parse- Funktion von PHP ist eine ereignisgesteuerte XML-Parsingmethode. Wir können den XML -Inhalt in ein strukturiertes Array umwandeln, indem wir einen Parser erstellen und Verarbeitungsfunktionen einrichten.

 function parseXmlToArray($xml) {
    $parser = xml_parser_create();
    $values = [];
    $index = [];

    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

    if (!xml_parse_into_struct($parser, $xml, $values, $index)) {
        echo "XML Parsing -Fehler: " . xml_error_string(xml_get_error_code($parser));
        xml_parser_free($parser);
        return false;
    }

    xml_parser_free($parser);
    return buildXmlArray($values);
}

function buildXmlArray($values) {
    $result = [];
    $stack = [];

    foreach ($values as $val) {
        switch ($val['type']) {
            case 'open':
                $tag = $val['tag'];
                $child = [];
                if (isset($val['attributes'])) {
                    $child['@attributes'] = $val['attributes'];
                }
                $child['@children'] = [];
                $stack[] = [&$result];
                $result[$tag][] = &$child;
                $result = &$child['@children'];
                break;

            case 'complete':
                $tag = $val['tag'];
                $entry = isset($val['value']) ? $val['value'] : '';
                if (isset($val['attributes'])) {
                    $result[$tag][] = [
                        '@attributes' => $val['attributes'],
                        '@value' => $entry
                    ];
                } else {
                    $result[$tag][] = $entry;
                }
                break;

            case 'close':
                $result = &$stack[count($stack) - 1][0];
                array_pop($stack);
                break;
        }
    }

    return $result;
}

4. Vollständiges Beispiel: Vom Download zur Analyse

Durch die Kombination der oben genannten zwei Teile können wir den vollständigen "Download + Parsing" -Prozess implementieren:

 $url = 'https://api.m66.net/data/sample.xml';
$xmlContent = fetchXmlData($url);

if ($xmlContent) {
    $parsedData = parseXmlToArray($xmlContent);
    echo "<pre>";
    print_r($parsedData);
    echo "</pre>";
}

5. Zusammenfassung

In diesem Artikel haben Sie gemeistert, wie die Curl -Erweiterung von PHP zum Herunterladen von XML -Daten verwendet wird und wie Sie mit XML_Parse in ein strukturiertes Array analysieren können. Obwohl XML_Parse eine Methode mit niedrigerer Ebene ist, hat es eine hohe Leistung und nur wenige Abhängigkeiten, sodass sie für Projekte mit Leistungsanforderungen geeignet ist.

Wenn Sie sich mit komplexeren XML befassen müssen, wird empfohlen, in Zukunft fortgeschrittenere Parser wie Simplexml oder Domdocument zu verwenden.