Bagaimana untuk menukar xml+ kepada php+ array

DDD
Lepaskan: 2023-06-02 11:54:19
asal
885 orang telah melayarinya

Kaedah untuk menukar tatasusunan xml+ kepada php+: 1. Gunakan sintaks "simplexml_load_string()" untuk menukar rentetan xml kepada objek SimpleXmlElement 2. Gunakan sintaks "json_decode()" untuk menukar objek SimpleXmlElement; tatasusunan PHP; 3. Gunakan sintaks "foreach()" untuk menggelung melalui elemen item 4. Gunakan sintaks "getDocNamespaces()" untuk memproses ruang nama rentetan xml.

Bagaimana untuk menukar xml+ kepada php+ array

Persekitaran pengendalian tutorial ini: sistem Windows 10, PHP versi 8.1.3, komputer dell g3

PHP ialah pengaturcaraan yang sangat popular language , boleh mengendalikan jenis pembolehubah seperti rentetan dan tatasusunan dengan mudah. Dalam PHP, anda boleh menggunakan rentetan XML sebagai sumber data dan kemudian menukarnya kepada tatasusunan untuk diproses.

Kaedah untuk menukar tatasusunan xml+ kepada php+:

1 Menukar rentetan XML kepada objek SimpleXmlElement

Dalam PHP, anda perlu menukar rentetan XML kepada objek SimpleXmlElement terlebih dahulu. Untuk melakukan ini, anda boleh menggunakan fungsi terbina dalam PHP simplexml_load_string(). Berikut ialah contoh:

$xml_string = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);
Salin selepas log masuk

Di sini, $xml_string ialah rentetan XML yang akan ditukar kepada objek SimpleXmlElement. simplexml_load_string() menukar rentetan XML kepada objek SimpleXmlElement dan menyerahkannya kepada pembolehubah $xml.

2. Tukar objek SimpleXmlElement kepada tatasusunan PHP

Seterusnya, anda perlu menukar objek SimpleXmlElement kepada tatasusunan PHP. Ini boleh dicapai menggunakan fungsi terbina dalam PHP json_decode(). Tetapi harus diperhatikan bahawa objek SimpleXmlElement perlu ditukar menjadi rentetan JSON sebelum penukaran. Berikut ialah contoh:

$xml_string = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);

$json = json_encode($xml);
$array = json_decode($json,TRUE);
Salin selepas log masuk

Dalam contoh di atas, simplexml_load_string() menukar rentetan XML kepada objek SimpleXmlElement, dan kemudian menggunakan json_encode() untuk menukar objek SimpleXmlElement kepada rentetan JSON. Akhir sekali gunakan json_decode() untuk menukar rentetan JSON kepada tatasusunan PHP.

3. Memproses atribut dalam rentetan XML

Jika rentetan XML mengandungi atribut, anda perlu menggunakan sifat objek SimpleXmlElement untuk mengakses atribut ini. Berikut ialah contoh:

$xml_string = &#39;<root><item name="PHP" year="1995"/><item name="MySQL" year="1995"/>
</root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$array = array();
foreach($xml->item as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item[&#39;name&#39;],
        &#39;year&#39; => (int)$item[&#39;year&#39;]
    );
}
Salin selepas log masuk

Dalam contoh ini, $xml_string mengandungi dua elemen item, setiap satu dengan dua atribut (nama dan tahun). Selepas menukar rentetan XML kepada objek SimpleXmlElement, anda boleh menggunakan foreach() untuk lelaran melalui setiap elemen item dan menggunakan $item['name'] dan $item['year'] untuk mengakses sifat setiap elemen.

Perhatikan bahawa penukaran sifat kepada rentetan dan integer dilakukan melalui hantaran.

4. Memproses ruang nama dalam rentetan XML

Jika ruang nama digunakan dalam rentetan XML, anda perlu menggunakan kaedah ruang nama objek SimpleXmlElement untuk mengakses elemen ini. Berikut ialah contoh:

$xml_string = &#39;<root xmlns="http://www.example.com"><item><name>PHP</name>
<year>1995</year></item><item><name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace(&#39;ns&#39;, $namespaces[&#39;&#39;]);
 
$items = $xml->xpath(&#39;//ns:item&#39;);
$array = array();
foreach($items as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item->name,
        &#39;year&#39; => (int)$item->year
    );
}
Salin selepas log masuk

Dalam contoh di atas, $xml_string mengandungi dua elemen item dan mentakrifkan ruang nama "http://www.example.com". Mula-mula, gunakan kaedah getDocNamespaces() untuk mendapatkan semua ruang nama dalam XML, dan kemudian gunakan kaedah registerXPathNamespace() untuk menyediakan awalan "ns" untuk ruang nama.

Gunakan kaedah xpath() untuk mencari dokumen XML untuk semua elemen item dengan ruang nama "ns". Kemudian, gunakan foreach() untuk melingkari setiap elemen dan mengakses nilainya menggunakan $item->name dan $item->year.

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

Label berkaitan:
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