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!