在 PHP 中將 XML 轉換為陣列
-
在 PHP 中使用
simplexml_load_string()
、json_encode()
和json_decode()
函式將 XML 轉換為陣列 -
使用
simplexml_load_file()
函式並將其型別轉換為陣列以將 XML 轉換為 PHP 中的陣列
本教程將介紹如何在 PHP 中將 XML 轉換為陣列。
在 PHP 中使用 simplexml_load_string()
、json_encode()
和 json_decode()
函式將 XML 轉換為陣列
我們可以通過一系列轉換將 XML 資料表示為 PHP 陣列。
我們可以使用 simplexml_load_string()
函式將 XML 字串解釋為一個物件。該函式將 XML 字串作為其第一個引數。
我們可以指定一個類作為第二個選項。該函式將返回指定類的物件。該函式的第三個引數是 LIBXML
常量。
接下來,我們應該使用 json_encode()
函式將物件轉換為 JSON。對於最後一部分,我們可以使用帶有引數 TRUE
的 json_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 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