我想使用 PHP 從 API 回應中回圈遍歷 XML 檔案,創建一個包含 XML 檔案夾節點id和name的陣列,對陣列內容進行降序排序(按 id),然后回顯/回傳name內容。
XML 內容:
<?xml version="1.0"?>
<success>
<document>
<folder>
<id>295</id>
<name>My Folder</name>
<parent>
<folder>
<id>83</id>
<name>Contents</name>
<parent>
<folder>
<id>45</id>
<name>Sub Folder</name>
<parent>
<folder>
<id>21</id>
<name>Root Folder</name>
</folder>
</parent>
</folder>
</parent>
</folder>
</parent>
</folder>
</document>
</success>
我自己用 SimpleXML 嘗試了一些事情,但一直卡住,因為 XML 輸出有這些嵌套<parent>節點,我不知道如何處理這些,只是獲取id和name節點。
這是我到目前為止的 PHP 部分:
<?php
if (file_exists('api_results.xml')) {
$xml = simplexml_load_string('api_results.xml');
foreach($xml->document->folder as $folder)
{
$folders = array();
foreach($folder as $key => $value)
{
$folder[(string)$key] = (string)$value;
}
$folders[] = $folder;
}
print_r($folders);
} else {
exit('Failed to open api_results.xml.');
}
如何創建一個陣列并添加每個 id/name 節點,然后對陣列內容進行排序?
uj5u.com熱心網友回復:
您可以使用 XPath,它允許您搜索<folder>節點串列。使用//folder將在檔案的所有級別進行搜索,讓您不必擔心嵌套foreach回圈。
然后,您可以使用$folder->id來獲取<id>每個<folder>.
一件事是您應該使用simplexml_load_file()從檔案加載資料,字串版本旨在從字串加載。
$xml = simplexml_load_file('api_results.xml');
$folders = [];
foreach ($xml->xpath('//folder') as $folder) {
$folders[] = [(string)$folder->id, (string)$folder->name];
}
print_r($folders);
對于您的測驗檔案,哪個給出了...
Array
(
[0] => Array
(
[0] => 295
[1] => My Folder
)
[1] => Array
(
[0] => 83
[1] => Contents
)
[2] => Array
(
[0] => 45
[1] => Sub Folder
)
[3] => Array
(
[0] => 21
[1] => Root Folder
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473793.html
