PHP XML 到數組中

王林
發布: 2024-08-29 13:09:58
原創
1062 人瀏覽過

我們使用它將 XML 文件轉換為 PHP 陣列。有時,我們需要將 XML 文件作為傳入資料進行處理或將資料匯出為 XML 文件。 XML 語言用於建立跨網站或應用程式共享的資料。因此,它提供了 XML 到數組的操作,以便順利地處理 XML 資料。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

在轉換時,我們需要使用下面提到的一些函數 –

  • file_get_contents() 函數: 此函數將檔案作為字串讀取。
  • simplexml_load_string() 函數: 此函數用於解析 XML 並傳回一個物件。
  • json_encode() 函數: 此函數對 JSON 字串進行編碼並傳回 JSON 值。
  • json_decode() 函數: 此函數解碼 JSON 字串(PHP 變數)。

將 PHP XML 轉換為陣列

它接受 XML 文件並將其轉換為陣列。假設我們有一個 XML 文件 ExXMl.xml;現在,我們要將其轉換為陣列。因此,要進行轉換,我們需要遵循一些步驟 –

  1. 借助 file_get_content() 函數將 ExXMl.xml 檔案匯入 PHP,因此它將 ExXMl.xml 檔案作為字串讀取並將其儲存到變數中。
  2. 接下來,讀取的字串資料將藉助 simplexml_load_string() 函數轉換為物件。
  3. 最後使用 json_decode() 函數對 json 字串進行解碼,將 json 編碼後的字串轉換為陣列。

範例

載入 XML 檔案並將其轉換為 PHP 陣列的範例 –

範例#1

首先,我們建立名為「ExXML.xml」的 xml 資料文件,並將資料內容建立為 –

代碼:

<?xml version="1.0" encoding="utf-8"?>
<Student>
<firstname name = 'John'>
<rollno> 12 </rollno>
<marks> 78 </marks>
<subject> English </subject>
</firstname>
<firstname name='Sam'>
<rollno> 15 </rollno>
<marks> 80 </marks>
<subject> English </subject>
</firstname>
<firstname name='Praveen'>
<rollno> 30 </rollno>
<marks> 50 </marks>
<subject> English </subject>
</firstname>
</Student>
Next,we create the PHP file to read and load the XML file, as below -
<?php
// xml file
$file = "ExXML.xml";
// Read XML file as string
$xml_file = file_get_contents($file);
//  xml string is Convert into an object
$obj = simplexml_load_string($xml_file);
// AN object Convert into json string
$json_string = json_encode($obj);
// Convert json string into an array
$array = json_decode($json_string, true);
// print an array
print_r($array);
?>
登入後複製

輸出:

PHP XML 到數組中

所有開始和結束標籤都是正確的。接下來,載入的物件分別以 json_encode () 和 json_decode() 函數編碼和解碼為 PHP 陣列。

範例#2

遇到並解析錯誤的範例-

接下來,我們編寫PHP 程式碼來將PHP XML 解析為數組,我們將看到在將XML 解析為數組時,由於XML 標籤不匹配或結構不正確而發生的解析錯誤,如下所示–

代碼:

<?xml version='1.0'?>
<Student>
<firstname name = 'John'>
<rollno> 12 </rollno>
<marks> 78 </marks>
<!-- missing -->
</firstname>
<firstname name='Sanjay'>
<rollno> 15 </rollno>
<marks> 80 </marks>
<!-- mismatch tag -->
<subject> English <subject>
</firstname>
<firstname name='Parvez'>
<rollno> 30 </rollno>
<marks> 50 </marks>
<subject> English </subject>
</firstname>
</Student>
Next, we create the PHP file to read and load the XML file, as below -
<?php
// xml file
$file = "ExXML.xml";
// Read file as string
$xml_file = file_get_contents($file);
//  xml string is Convert into an object
$obj = simplexml_load_string($xml_file);
// check xml load or not
if ($obj == FALSE) {
echo "There were errors to parse the XML file.\n";
exit;
}
// AN object Convert into json string
$json_string = json_encode($obj);
// Convert json string into an array
$array = json_decode($json_string, true);
// print an array
print_r($array);
?>
登入後複製

輸出:

PHP XML 到數組中

開始和結束標記之一不匹配,並且缺少一個標記(如帶有註釋標記的 XML 文件中所述)。  解析並載入 XML 檔案時會出現警告,如上面的輸出所示。因此,透過閱讀警告,更正 XML 檔案並再次載入。

以上是PHP XML 到數組中的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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