Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar xml ke dalam array dalam php

Bagaimana untuk menukar xml ke dalam array dalam php

PHPz
PHPzasal
2023-04-20 10:11:08520semak imbas

PHP, sebagai bahasa skrip, mempunyai ciri-ciri pengaturcaraan berorientasikan objek dan pengaturcaraan berfungsi. PHP digunakan secara meluas dalam bidang pembangunan web. Dari segi pemprosesan data XML, PHP juga menyediakan banyak fungsi dan kaedah yang berguna. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menukar rentetan XML kepada tatasusunan.

Pertama, kita perlu memasang sambungan DOM PHP. Sambungan DOM ialah sambungan yang memproses dokumen XML dalam cara berorientasikan objek Kita boleh menggunakan kelas DOMDocumentnya untuk memproses XML. Untuk proses pemasangan khusus, sila rujuk dokumentasi PHP rasmi dan tidak akan diulang di sini.

Seterusnya, kita perlu menukar rentetan XML kepada objek DOM. Terdapat dua kaedah yang disediakan di sini: satu ialah memuatkan rentetan XML ke dalam objek DOM melalui kaedah loadXML() dan satu lagi ialah memuatkan fail XML ke dalam objek DOM melalui kaedah load(). Di sini kami menunjukkan pemuatan rentetan XML melalui kaedah loadXML():

$xml_string = '<root><person><name>John</name><age>30</age></person><person><name>Mary</name><age>28</age></person></root>';
$dom = new DOMDocument();
$dom->loadXML($xml_string);

Dengan cara ini, kami menukar rentetan XML kepada objek DOM Seterusnya, kami perlu menukar objek DOM kepada tatasusunan. Objek DOM mempunyai beberapa fungsi dan kaedah yang berguna untuk memproses dokumen XML, yang paling biasa digunakan ialah kaedah getElementsByTagName() dan getAttribute(). Oleh kerana struktur data XML ialah struktur pokok, kaedah ini boleh membantu kami melintasi dokumen XML.

Kita boleh menggunakan fungsi rekursif untuk menukar objek DOM kepada tatasusunan:

function dom2array($node) {
    $array = array();
    if($node->hasAttributes()) {
        foreach($node->attributes as $attr) {
            $array[$attr->nodeName] = $attr->nodeValue;
        }
    }
    if($node->hasChildNodes()) {
        foreach($node->childNodes as $child) {
            if($child->nodeType == XML_TEXT_NODE) {
                $array['_value'] = $child->nodeValue;
                continue;
            }

            $name = $child->nodeName;
            if(!isset($array[$name])) {
                $array[$name] = dom2array($child);
            } else {
                if(!is_array($array[$name])) {
                    $array[$name] = array($array[$name]);
                }
                $array[$name][] = dom2array($child);
            }
        }
    }
    return $array;
}

$xml_array = dom2array($dom->documentElement);
print_r($xml_array);

Fungsi ini akan merentasi semua nod secara rekursif, menggunakan nama nod sebagai kunci tatasusunan, jika terdapat satu dengan nama yang sama Nod disimpan dalam tatasusunan. Melalui kod di atas, kami mendapat output berikut:

Array
(
    [person] => Array
        (
            [0] => Array
                (
                    [name] => John
                    [age] => 30
                )
            [1] => Array
                (
                    [name] => Mary
                    [age] => 28
                )
        )
)

Seperti yang anda lihat, kami berjaya menukar rentetan XML kepada tatasusunan. Dengan cara ini, kami boleh memproses data XML dengan mudah, dan kami juga boleh menggunakan PHP untuk memproses data XML dengan lebih cekap semasa pembangunan.

Atas ialah kandungan terperinci Bagaimana untuk menukar xml ke dalam array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn