在 PHP 中將 XML 轉換為陣列

Subodh Poudel 2023年1月30日 2022年5月14日
  1. 在 PHP 中使用 simplexml_load_string()json_encode()json_decode() 函式將 XML 轉換為陣列
  2. 使用 simplexml_load_file() 函式並將其型別轉換為陣列以將 XML 轉換為 PHP 中的陣列
在 PHP 中將 XML 轉換為陣列

本教程將介紹如何在 PHP 中將 XML 轉換為陣列。

在 PHP 中使用 simplexml_load_string()json_encode()json_decode() 函式將 XML 轉換為陣列

我們可以通過一系列轉換將 XML 資料表示為 PHP 陣列。

我們可以使用 simplexml_load_string() 函式將 XML 字串解釋為一個物件。該函式將 XML 字串作為其第一個引數。

我們可以指定一個類作為第二個選項。該函式將返回指定類的物件。該函式的第三個引數是 LIBXML 常量。

接下來,我們應該使用 json_encode() 函式將物件轉換為 JSON。對於最後一部分,我們可以使用帶有引數 TRUEjson_decode() 函式將 JSON 轉換為陣列。

例如,考慮以下 XML 資料。

<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>

建立一個變數 $xmlstr 並將所有 XML 作為字串儲存在變數中。接下來,建立另一個變數 $XML 並將 simplexml_load_string() 函式分配給它。

在函式中,將 $xmlstr 設定為第一個引數,將 SimpleXMLElement 設定為類,將 LIBXML_NOCDATA 設定為第三個引數。接下來,使用 json_encode() 函式將 $XML 轉換為 JSON。

然後,使用 json_decode() 函式將 JSON 轉換為陣列。不要忘記包含 TRUE 作為 json_decode() 函式的第二個引數。最後,列印陣列。

此處,LIBXML_NOCDATA 常量將字元資料 (CDATA) 合併為文字節點。因此,我們可以使用這些不同的 PHP 函式將 XML 轉換為 PHP 陣列。

$xmlstr ='
<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>';
$XML = simplexml_load_string($xmlstr, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($XML);
$arr = json_decode($json,TRUE);
print_r($arr);

輸出:

Array ( [bachelors] => Array ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => Array ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 

使用 simplexml_load_file() 函式並將其型別轉換為陣列以將 XML 轉換為 PHP 中的陣列

我們可以使用 simplexml_load_file() 函式將 XML 解釋為一個物件。然後,我們可以通過型別轉換將物件轉換為陣列。

該函式將 XML 檔案的路徑作為第一個引數。該函式幾乎類似於 simplexml_load_string() 函式。我們可以建立一個 XML 檔案並在 simplexml_load_file() 函式中使用它的路徑。

例如,我們可以在第一種方法中使用相同的 XML 檔案,將 XML 檔案儲存為 file.xml,並在 PHP 中建立一個變數 $XML。將 simplexml_load_file() 分配給以 file.xml 作為引數的變數。

接下來,建立一個 $arr 變數並將 $XML 變數型別轉換為一個陣列。將型別轉換的陣列分配給 $arr 變數。最後,使用 print_r() 函式列印 $arr 變數。

這樣,我們就可以使用 simplexml_load_file() 函式來載入 XML 檔案並將其轉換為陣列。

$XML = simplexml_load_file('file.xml');
$arr = (array)$XML;
print_r($arr);

輸出:

Array ( [bachelors] => SimpleXMLElement Object ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => SimpleXMLElement Object ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相關文章 - PHP XML

相關文章 - PHP Array