首頁 > 後端開發 > PHP問題 > php怎麼把xml轉成數組

php怎麼把xml轉成數組

PHPz
發布: 2023-04-24 11:41:30
原創
2723 人瀏覽過

在使用PHP進行程式設計的過程中,經常需要用到XML文件,但XML文件的語法規則並不是所有的開發者都熟悉,因此需要將XML文件轉換為陣列來處理。以下將介紹如何使用PHP將XML檔案轉換為陣列。

一、使用SimpleXML擴充函數

SimpleXML擴充函數是PHP自帶的一個XML解析擴展,它可以將XML檔案解析成一個對象,然後把這個物件轉換為陣列。

使用SimpleXML擴充功能的步驟如下:

  1. 使用simplexml_load_file()函數載入XML文件,範例程式碼如下:
$xml = simplexml_load_file('example.xml');
登入後複製
  1. #把SimpleXML物件轉換為數組,範例程式碼如下:
$array = json_decode(json_encode($xml), TRUE);
登入後複製

其中,json_decode()函數是將JSON格式字串轉換成PHP陣列的函數。 json_encode()函數則是將PHP陣列序列化成JSON格式字串。這裡我們將SimpleXML物件序列化成JSON格式字串,然後再把它解析成PHP數組。

  1. 處理轉換後的陣列,實作業務邏輯。

二、使用DOMDocument類別

DOMDocument是PHP自帶的一個DOM解析擴展,它可以將XML檔案解析成一棵樹狀結構,然後找到我們需要的節點進行處理。

使用DOMDocument類別的步驟如下:

  1. 使用load()方法載入XML文件,範例程式碼如下:
$dom = new DOMDocument();
$dom->load('example.xml');
登入後複製
    ##取得根節點,範例程式碼如下:
  1. $root = $dom->documentElement;
    登入後複製
    遍歷根節點下的每一個子節點,將節點的名稱和值轉換成陣列。
範例程式碼如下:

$array = array();
if ($root->hasChildNodes()) {
    $children = $root->childNodes;
    for ($i = 0; $i < $children->length; $i++) {
        $child = $children->item($i);
        $array[$child->nodeName] = $child->nodeValue;
    }
}
登入後複製
在上述程式碼中,我們先建立一個空數組,然後遍歷根節點下的每一個子節點。如果子節點不是空的,那麼我們將它的名稱和值儲存在陣列中。

    處理轉換後的陣列,實作業務邏輯。
三、使用XML Parser類別

XML Parser是PHP自帶的一個XML解析器,它可以將XML檔案解析成事件流,然後我們可以依據事件的類型來處理這個XML檔。

使用XML Parser的步驟如下:

    建立XML解析器對象,範例程式碼如下:
  1. $xml_parser = xml_parser_create();
    登入後複製
    設定事件處理函數,範例程式碼如下:
  1. function startElement($parser, $element_name, $element_attrs) {
        //处理元素开始事件
    }
    
    function endElement($parser, $element_name) {
        //处理元素结束事件
    }
    
    function charData($parser, $data) {
        //处理文本内容事件
    }
    
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "charData");
    登入後複製
在上述程式碼中,我們定義了三個處理函數:startElement()用於處理元素開始事件,endElement()用於處理元素結束事件,charData()用於處理文字內容事件。然後我們把這三個處理函數註冊到XML解析器中去。

    解析XML文件,範例程式碼如下:
  1. $fp = fopen('example.xml', 'r');
    while ($data = fread($fp, 4096)) {
        xml_parse($xml_parser, $data, feof($fp));
    }
    登入後複製
在上述程式碼中,我們先將XML文件以二進位方式讀入內存,然後逐步將資料塊傳遞給XML解析器進行解析。

    處理轉換後的陣列,實作業務邏輯。
總結:

以上是三種將XML檔案轉換成陣列的方法,開發者可以依照實際需求選擇合適的方法。在使用SimpleXML擴充函數和DOMDocument類別的過程中,PHP會佔用較大的記憶體和CPU資源,而使用XML Parser類別則可以節省記憶體和CPU資源,但需要編寫較多的處理函數。

以上是php怎麼把xml轉成數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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