Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie XML -Daten, die von xml_parse mit Array_Map analysiert werden

So verwenden Sie XML -Daten, die von xml_parse mit Array_Map analysiert werden

M66 2025-04-24

In PHP ist die Verarbeitung von XML -Daten eine häufige Aufgabe, insbesondere bei der Interaktion mit externen Systemen. xml_parse ist eine zugrunde liegende Parsingfunktion, während Array_Map eine Funktion höherer Ordnung für die Umwandlung von Stapeldaten ist. Das Kombinieren dieser beiden Funktionen kann Batch -XML -Daten effektiv verarbeiten und konvertieren, wodurch die Lesbarkeit und Wartbarkeit des Codes verbessert wird.

Im Folgenden werden wir ein Beispiel verwenden, um zu demonstrieren, wie dieses Ziel erreicht werden kann.

Beispiel: Stapelverarbeitung von XML -Daten und Konvertierung in ein strukturiertes Array

Beginnen wir mit einem einfachen XML -Text:

 <items>
    <item>
        <id>1</id>
        <name>WarenA</name>
        <url>http://m66.net/product/1</url>
    </item>
    <item>
        <id>2</id>
        <name>WarenB</name>
        <url>http://m66.net/product/2</url>
    </item>
</items>

Schritt 1: Verwenden Sie XML_Parser , um XML zu analysieren

 $xmlData = <<<XML
<items>
    <item>
        <id>1</id>
        <name>WarenA</name>
        <url>http://m66.net/product/1</url>
    </item>
    <item>
        <id>2</id>
        <name>WarenB</name>
        <url>http://m66.net/product/2</url>
    </item>
</items>
XML;

$parser = xml_parser_create();
xml_parse_into_struct($parser, $xmlData, $values, $index);
xml_parser_free($parser);

Dies analysiert die XML -Daten in zwei Arrays: $ -Werte (einschließlich Details für alle Tags) und $ index (einschließlich Indexpositionen für Tags).

Schritt 2: Extrahieren Sie das Elementelement

 $items = [];
foreach ($index['ITEM'] as $i => $pos) {
    $item = [];

    $idPos = $index['ID'][$i];
    $namePos = $index['NAME'][$i];
    $urlPos = $index['URL'][$i];

    $item['id'] = $values[$idPos]['value'];
    $item['name'] = $values[$namePos]['value'];
    $item['url'] = $values[$urlPos]['value'];

    $items[] = $item;
}

Jetzt erhalten wir eine ordentliche Array -Struktur, zum Beispiel:

 [
    ['id' => '1', 'name' => 'WarenA', 'url' => 'http://m66.net/product/1'],
    ['id' => '2', 'name' => 'WarenB', 'url' => 'http://m66.net/product/2'],
]

Schritt 3: Verwenden Sie Array_MAP , um Daten in Stapel zu konvertieren

Angenommen, wir möchten zu jeder URL hinzufügen ? Ref = XML -Parameter und den Produktnamen in die Kapitalisierung umwandeln. Wir können dies tun:

 $processedItems = array_map(function($item) {
    $item['name'] = strtoupper($item['name']);
    $item['url'] .= '?ref=xml';
    return $item;
}, $items);

Endgültige Ausgabe:

 print_r($processedItems);

Ausgangsergebnis:

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => WarenA
            [url] => http://m66.net/product/1?ref=xml
        )

    [1] => Array
        (
            [id] => 2
            [name] => WarenB
            [url] => http://m66.net/product/2?ref=xml
        )
)