Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membaca data xml dalam php dan menukarnya menjadi array

Bagaimana untuk membaca data xml dalam php dan menukarnya menjadi array

PHPz
PHPzasal
2023-04-26 14:22:02605semak imbas

Dalam banyak projek pembangunan, XML digunakan secara meluas sebagai fail konfigurasi, penghantaran data dan juga media dokumen. Dalam pembangunan web, bahasa PHP juga memainkan peranan penting, dan PHP membaca xml dan menukarnya kepada tatasusunan adalah kemahiran asas dan perlu. Artikel ini akan menerangkan proses secara terperinci.

1. Membaca XML

Sebelum membaca XML, kita perlu mendapatkan contoh fail XML. Terdapat banyak kaedah, seperti mendapatkannya dari pelayan, memuat naik fail, menulis terus dalam skrip, dll. Berikut ialah contoh mendapatkan fail XML daripada pelayan:

<?php
$xmlFile = &#39;example.xml&#39;;   //设置XML文件路径
$xml = simplexml_load_file($xmlFile);   //将文件载入到对象中
?>

Di sini kami menggunakan kaedah simplexml_load_file(), yang boleh memuatkan kandungan XML ke dalam objek. Objek boleh mewakili keseluruhan dokumen XML atau satu elemen. Objek yang dikembalikan boleh digunakan sebagai tatasusunan mudah.

2. Tukar kepada tatasusunan

Sebelum menukar fail XML kepada tatasusunan, kita perlu memahami struktur asas fail XML. Terdapat tiga jenis nod asas dalam XML: elemen, atribut dan nod teks.

Berikut ialah contoh:

<person>
    <name>John Smith</name>
    <age>30</age>
    <gender>M</gender>
    <address>
        <city>New York</city>
        <street>123 Main St</street>
        <zipcode>10000</zipcode>
    </address>
</person>

Seterusnya, mari kita lihat cara menukar XML kepada tatasusunan PHP:

<?php
function xmlToArray($xml) {
    $result = [];
    foreach ($xml->children() as $element) {
        $elementName = $element->getName();
        if(count($element->children()) > 0) {
            $result[$elementName] = xmlToArray($element);
        } else {
            $result[$elementName] = trim((string)$element);
        }
        foreach($element->attributes() as $attrName => $attrValue) {
            $result['attribute'][$attrName] = (string)$attrValue;
        }
    }
    return $result;
}
?>

Dengan kod di atas , kita adalah Ini menggunakan fungsi rekursif. Mula-mula, kami merentasi nod XML, memproses elemen dan atributnya. Jika nod semasa mempunyai nod anak, fungsi ini dipanggil secara rekursif untuk menukarnya kepada tatasusunan berbilang dimensi. Jika nod tidak mempunyai anak, gunakan itu sebagai nilai item.

Selain itu, kita juga boleh menambah atribut. Untuk setiap elemen, kami mengulangi atributnya dan menambahkannya sebagai item tatasusunan pada tatasusunan "atribut".

3. Menggunakan tatasusunan

Kini kami telah menukar XML kepada tatasusunan PHP. Seterusnya, kita boleh menggunakan tatasusunan yang baru kita tukar untuk mendapatkan nilai dalam dokumen.

<?php
$xmlFile = &#39;example.xml&#39;;   //设置XML文件路径
$xml = simplexml_load_file($xmlFile);   //将文件载入到对象中
$result = xmlToArray($xml);   //转换成数组
echo $result[&#39;person&#39;][&#39;name&#39;];   //输出John Smith
echo $result[&#39;person&#39;][&#39;address&#39;][&#39;city&#39;];   //输出New York
?>

Menggunakan kaedah ini, kami boleh memproses dan mengurus dokumen XML dengan lebih mudah.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan PHP untuk membaca fail XML dan menukarnya kepada tatasusunan berbilang dimensi. Walaupun menukar XML kepada tatasusunan PHP mungkin agak membosankan, ia masih merupakan kemahiran yang sangat diperlukan dalam pembangunan web. Pada masa yang sama, menukar fail XML ringkas kepada tatasusunan PHP hanyalah proses asas Terdapat banyak kegunaan lanjutan XML, melibatkan DTD (Definisi Jenis Dokumen) dan XSLT (Transformasi Bahasa Lembaran Gaya XML). Saya berharap semasa mempelajari PHP untuk mendapatkan XML dan menukarnya kepada tatasusunan, anda juga boleh memahami pengetahuan asas XML dan mengaplikasikannya pada projek yang lebih kompleks.

Atas ialah kandungan terperinci Bagaimana untuk membaca data xml dalam php dan menukarnya menjadi array. 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