Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?

Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 08:11:02200semak imbas

How to Convert a SimpleXML Object to an Array Efficiently and Preserve Attributes?

Menukar Objek SimpleXML kepada Tatasusunan: Pendekatan yang Lebih Cekap

Menukar objek SimpleXML kepada tatasusunan boleh berguna untuk memanipulasi data XML dengan lebih cekap. Walau bagaimanapun, kaedah yang diterangkan dalam soalan awal, yang melibatkan pengekodan dan penyahkodan JSON, boleh menyusahkan. Berikut ialah pendekatan yang dipertingkatkan untuk mencapai perkara yang sama:

function xmlstring2array($string) {

$xml = simplexml_load_string($string);
return xml2array($xml);

}

function xml2array($xmlObject) {

foreach ((array) $xmlObject as $index => $node) {
    if (is_object($node)) {
        $out[$index] = xml2array($node);
    } else {
        $out[$index] = $node;
    }
}
return $out;

}

Fungsi yang telah disemak ini, xml2array(), melelar secara rekursif melalui objek SimpleXML, menukar nod kepada tatasusunan sambil mengekalkan strukturnya. Ia mengelakkan pengekodan dan penyahkodan JSON di atas kepala, menjadikannya lebih cekap dan mantap.

Fungsi asal kehilangan atribut apabila menukar XML kepada tatasusunan. Walau bagaimanapun, anda boleh mengekalkan atribut dengan menggunakan kaedah atribut() SimpleXML dalam gelung xml2array():

foreach ((array) $xmlObject sebagai $index => $node) {

...
if (is_object($node)) {
    $out[$index] = xml2array($node);
} else if ($node instanceof SimpleXMLElement) {
    $attrs = $node->attributes();
    if (count($attrs) > 0) {
        $out[$index] = (array) $node;
        foreach ($attrs as $attrName => $attrValue) {
            $out[$index][$attrName] = (string) $attrValue;
        }
    } else {
        $out[$index] = (string) $node;
    }
}
...

}

Dengan memasukkan penambahbaikan ini, anda boleh menukar objek SimpleXML kepada tatasusunan dengan lebih cekap, mengekalkan kedua-dua struktur dan atribut.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?. 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