Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie XML in ein Array in PHP

So konvertieren Sie XML in ein Array in PHP

PHPz
PHPzOriginal
2023-04-20 15:05:401343Durchsuche

In der Webentwicklung wird XML häufig als Datenübertragungs- und Speicherformat verwendet. Wenn wir Daten im XML-Format verwenden müssen, müssen wir normalerweise die XML-Zeichenfolge in ein Array oder Objekt konvertieren, um nachfolgende Vorgänge zu erleichtern. In PHP können Sie XML-Strings ganz einfach in Arrays konvertieren. In diesem Artikel wird vorgestellt, wie PHP XML in ein Array konvertiert.

1. Einführung in das XML-Format

XML ist eine Auszeichnungssprache, die hauptsächlich zur Datenübertragung und -speicherung verwendet wird. XML enthält Elemente und Attribute. Das Element wird normalerweise durch ein Tag dargestellt, wie zum Beispiel:

<book>
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>

Dieser XML-Text definiert ein Buchelement, das Titel- und Preis-Unterelemente enthält.

Attribut ist eine Möglichkeit, zusätzliche Informationen zu einem Element hinzuzufügen, wie zum Beispiel:

<book category="Programming">
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>

In diesem Beispiel legen wir das Kategorieattribut für das Buchelement mit dem Wert „Programmierung“ fest.

2. Konvertieren Sie XML in ein Array in PHP

PHP bietet viele Funktionen zur Verarbeitung von XML, darunter die am häufigsten verwendeten Funktionen simplexml_load_string() und xml_parse_into_struct(). Im Folgenden stellen wir die Verwendung dieser beiden Funktionen vor.

  1. simplexml_load_string()

simplexml_load_string() Funktion kann ein SimpleXMLElement-Objekt aus einem XML-String erstellen. Über dieses Objekt können Sie problemlos auf Elemente und Attribute in XML zugreifen und das SimpleXMLElement-Objekt auch in ein Array oder anderes konvertieren Typen. Das Folgende ist ein Beispiel für die Verwendung der Funktion simplexml_load_string() zum Konvertieren von XML in ein Array:

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';
        
$data = json_decode(json_encode(simplexml_load_string($xml)), true);
print_r($data);

Führen Sie den obigen Code aus und die Ausgabe lautet wie folgt:

Array
(
    [book] => Array
        (
            [0] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Programming
                        )
                    [title] => PHP从入门到精通
                    [author] => 张三
                    [price] => 50
                )
            [1] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Web Development
                        )
                    [title] => JavaScript高级编程
                    [author] => 李四
                    [price] => 45
                )
        )
)

Wie Sie sehen können, konvertiert die Funktion simplexml_load_string() XML in ein Beziehung bestehend aus mehreren Arrays Array. Die Funktion

  1. xml_parse_into_struct()

xml_parse_into_struct() analysiert einen XML-String in ein Array. Das Folgende ist ein Beispiel für die Verwendung der Funktion xml_parse_into_struct() zum Konvertieren von XML in ein Array:

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals);
xml_parser_free($p);

print_r($vals);

Führen Sie den obigen Code aus und die Ausgabe lautet wie folgt:

Array
(
    [0] => Array
        (
            [tag] => BOOKSTORE
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Programming
                )
        )

    [2] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [3] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => PHP从入门到精通
        )

    [4] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [5] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 张三
        )

    [6] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [7] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 50
        )

    [8] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [9] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Web Development
                )
        )

    [10] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [11] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => JavaScript高级编程
        )

    [12] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [13] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 李四
        )

    [14] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [15] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 45
        )

    [16] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [17] => Array
        (
            [tag] => BOOKSTORE
            [type] => close
            [level] => 1
        )
)

Wie Sie sehen können, analysiert die Funktion xml_parse_into_struct() XML in ein Array bestehend aus mehreren Arrays. Relationale Arrays, wobei jedes Array ein Element oder Attribut in XML darstellt.

3. Verwenden Sie die DOMDocument-Erweiterung zur Konvertierung

In PHP gibt es auch eine Methode, um die DOMDocument-Erweiterung zum Parsen von XML zu verwenden. DOMDocument ist eine integrierte Erweiterung von PHP und sehr leistungsstark. Das Folgende ist ein Beispiel für die Verwendung von DOMDocument zum Konvertieren von XML-Daten:

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$dom = new DOMDocument;
$dom->loadXML($xml);
$data = array();
foreach ($dom->getElementsByTagName('book') as $book) {
    $data[] = array(
        'category' => $book->getAttribute('category'),
        'title' => $book->getElementsByTagName('title')->item(0)->textContent,
        'author' => $book->getElementsByTagName('author')->item(0)->textContent,
        'price' => $book->getElementsByTagName('price')->item(0)->textContent,
    );
}
print_r($data);

Führen Sie den obigen Code aus. Das Ausgabeergebnis lautet wie folgt:

Array
(
    [0] => Array
        (
            [category] => Programming
            [title] => PHP从入门到精通
            [author] => 张三
            [price] => 50
        )

    [1] => Array
        (
            [category] => Web Development
            [title] => JavaScript高级编程
            [author] => 李四
            [price] => 45
        )

)

Wie Sie sehen können, können wir mit DOMDocument zum Parsen von XML-Daten die Elemente und problemlos abrufen Attribute in XML und konvertieren Sie sie dann in ein Array.

4. Zusammenfassung

Die oben genannten Möglichkeiten für PHP, XML in Arrays zu konvertieren, nämlich die Funktion simplexml_load_string(), die Funktion xml_parse_into_struct() und die Verwendung der DOMDocument-Erweiterung. Jede Methode hat ihre anwendbaren Szenarien. Wählen Sie die geeignete Methode entsprechend den tatsächlichen Anforderungen. Unabhängig von der verwendeten Methode müssen wir natürlich auf das Format und die Spezifikationen von XML achten, um die Richtigkeit und Integrität der Daten sicherzustellen.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn