Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menukar XML kepada tatasusunan dalam PHP

Bagaimana untuk menukar XML kepada tatasusunan dalam PHP

PHPz
Lepaskan: 2023-04-20 15:47:26
asal
1416 orang telah melayarinya

Dalam pembangunan web, XML digunakan secara meluas sebagai penghantaran data dan format storan. Apabila kita perlu menggunakan data format XML, kita biasanya perlu menukar rentetan XML kepada tatasusunan atau objek untuk memudahkan operasi seterusnya. Dalam PHP, anda boleh menukar rentetan XML kepada tatasusunan dengan mudah. Artikel ini akan memperkenalkan cara PHP menukar XML kepada tatasusunan.

1. Pengenalan kepada format XML

XML ialah bahasa penanda, terutamanya digunakan untuk penghantaran dan penyimpanan data. XML mengandungi elemen dan atribut. Elemen biasanya diwakili oleh teg, seperti:

<book>
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>
Salin selepas log masuk

Teks XML ini mentakrifkan elemen buku, yang mengandungi sub-elemen tajuk dan harga.

Atribut ialah cara untuk menambah maklumat tambahan pada elemen, seperti:

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

Dalam contoh ini, kami menetapkan atribut kategori untuk elemen buku dengan nilai "Pengaturcaraan".

2. Tukar XML kepada tatasusunan dalam PHP

PHP menyediakan banyak fungsi untuk memproses XML, antaranya fungsi yang lebih biasa digunakan ialah simplexml_load_string() dan xml_parse_into_struct(). Di bawah ini kami memperkenalkan penggunaan kedua-dua fungsi ini masing-masing.

  1. simplexml_load_string()

Fungsi simplexml_load_string() boleh mencipta objek SimpleXMLElement daripada rentetan XML, yang melaluinya anda boleh mengakses elemen dan atribut dalam XML dengan mudah, anda boleh juga menukar objek SimpleXMLElement kepada tatasusunan atau jenis data lain. Berikut ialah contoh menggunakan fungsi simplexml_load_string() untuk menukar XML kepada tatasusunan:

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

Jalankan kod di atas, outputnya adalah seperti berikut:

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

Sambil anda boleh lihat, fungsi simplexml_load_string() Tukar XML kepada tatasusunan relasi yang terdiri daripada berbilang tatasusunan.

  1. xml_parse_into_struct()

xml_parse_into_struct () fungsi menghuraikan rentetan XML ke dalam tatasusunan. Berikut ialah contoh menggunakan fungsi xml_parse_into_struct() untuk menukar XML kepada tatasusunan:

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

Jalankan kod di atas, outputnya adalah seperti berikut:

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

Sambil anda boleh lihat, fungsi xml_parse_into_struct() Parse XML ke dalam tatasusunan relasi yang terdiri daripada berbilang tatasusunan, di mana setiap tatasusunan mewakili elemen atau atribut dalam XML.

3. Gunakan sambungan DOMDocument untuk penukaran

Dalam PHP terdapat cara lain untuk menggunakan sambungan DOMDocument untuk menghuraikan XML. DOMDocument ialah sambungan terbina dalam PHP dan sangat berkuasa. Berikut ialah contoh menggunakan DOMDocument untuk menukar data XML:

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

Jalankan kod di atas, hasil output adalah seperti berikut:

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

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

)
Salin selepas log masuk

Seperti yang anda lihat, kami boleh gunakan DOMDocument untuk menghuraikan data XML dengan mudah Dapatkan elemen dan atribut dalam XML dengan cekap dan tukarkannya kepada tatasusunan.

4. Ringkasan

Di atas adalah beberapa cara untuk PHP menukar XML kepada tatasusunan, iaitu fungsi simplexml_load_string(), fungsi xml_parse_into_struct() dan penggunaan sambungan DOMDocument. Setiap kaedah mempunyai senario yang boleh digunakan Pilih kaedah yang sesuai mengikut keperluan sebenar. Sudah tentu, tidak kira kaedah yang digunakan, kita perlu memberi perhatian kepada format dan spesifikasi XML untuk memastikan ketepatan dan integriti data.

Atas ialah kandungan terperinci Bagaimana untuk menukar XML kepada tatasusunan 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