首頁 > 後端開發 > php教程 > 如何有效率地將 SimpleXML 物件轉換為陣列並保留屬性?

如何有效率地將 SimpleXML 物件轉換為陣列並保留屬性?

Mary-Kate Olsen
發布: 2024-10-27 08:11:02
原創
323 人瀏覽過

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

將SimpleXML 物件轉換為陣列:一種更有效的方法

將SimpleXML 物件轉換為陣列對於操作XML 資料非常有用有效。然而,第一個問題中描述的方法涉及 JSON 的編碼和解碼,可能會很麻煩。這是實現相同目的的改進方法:

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;
登入後複製

}

這個修改後的函數xml2array() 遞歸地迭代SimpleXML 對象,將節點轉換為數組,同時保留其結構。它避免了 JSON 編碼和解碼的開銷,使其更有效率和強壯。

原始函數在將 XML 轉換為陣列時遺失了屬性。但是,您可以透過在xml2array() 迴圈中使用SimpleXML 的attribute() 方法來保留屬性:

foreach ((array) $xmlObject as $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;
    }
}
...
登入後複製

}

透過合併這些改進,您可以更有效地將SimpleXML 物件轉換為數組,同時保留結構和屬性。

以上是如何有效率地將 SimpleXML 物件轉換為陣列並保留屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板