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

Bagaimana untuk menukar xml ke dalam array dalam php

PHPz
Lepaskan: 2023-04-20 13:36:09
asal
556 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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
                )
        )
)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan