我現在要處理這樣一個 XML
超長待機 "續航時間: " "充電預估: " "續航時間" "充電預估" 未知 電池詳情 Android 系統 WLAN 空閑狀態 藍芽空閑狀態 CPU 空閑狀態 語音通話 資料 待機 未知 螢幕 WLAN
我的 PHP 代碼為
load("ZH-CNstrings.xml");// print $xmlDoc->saveXML();$x = $xmlDoc->documentElement;foreach ($x->childNodes AS $item) { echo ""; print var_dump($item); echo "
"; }?>
現在我可以去到 string 的內容 “超長待機”如 但 name 的內容 “mode_label_longest_standby” 我不知道怎麼取出來
回複內容:
我現在要處理這樣一個 XML
超長待機 "續航時間: " "充電預估: " "續航時間" "充電預估" 未知 電池詳情 Android 系統 WLAN 空閑狀態 藍芽空閑狀態 CPU 空閑狀態 語音通話 資料 待機 未知 螢幕 WLAN
我的 PHP 代碼為
load("ZH-CNstrings.xml");// print $xmlDoc->saveXML();$x = $xmlDoc->documentElement;foreach ($x->childNodes AS $item) { echo ""; print var_dump($item); echo "
"; }?>
現在我可以去到 string 的內容 “超長待機”如 但 name 的內容 “mode_label_longest_standby” 我不知道怎麼取出來
這麼整齊的XML,lz要不要用正則試試?
超長待機 "續航時間: " "充電預估: " "續航時間" "充電預估" 未知 電池詳情 Android 系統 WLAN 空閑狀態 藍芽空閑狀態 CPU 空閑狀態 語音通話 資料 待機 未知 螢幕 WLAN';preg_match_all("|(.*)|", $str, $result, PREG_SET_ORDER);var_dump($result);
array(17) { [0]=> array(3) { [0]=> string(63) "超長待機" [1]=> string(26) "mode_label_longest_standby" [2]=> string(12) "超長待機" } [1]=> array(3) { [0]=> string(80) ""續航時間: "" [1]=> string(39) "battery_info_remaining_discharging_time" [2]=> string(16) ""續航時間: "" } [2]=> array(3) { [0]=> string(77) ""充電預估: "" [1]=> string(36) "battery_info_remaining_charging_time" [2]=> string(16) ""充電預估: "" } [3]=> array(3) { [0]=> string(99) ""續航時間"" [1]=> string(60) "ongoing_notification_battery_info_remaining_discharging_time" [2]=> string(14) ""續航時間"" } [4]=> array(3) { [0]=> string(96) ""充電預估"" [1]=> string(57) "ongoing_notification_battery_info_remaining_charging_time" [2]=> string(14) ""充電預估"" } [5]=> array(3) { [0]=> string(57) "未知" [1]=> string(26) "battery_info_value_unknown" [2]=> string(6) "未知" } [6]=> array(3) { [0]=> string(63) "電池詳情" [1]=> string(26) "battery_info_details_title" [2]=> string(12) "電池詳情" } [7]=> array(3) { [0]=> string(63) "Android 系統" [1]=> string(24) "uid_label_android_system" [2]=> string(14) "Android 系統" } [8]=> array(3) { [0]=> string(61) "WLAN 空閑狀態" [1]=> string(19) "uid_label_wlan_idle" [2]=> string(17) "WLAN 空閑狀態" } [9]=> array(3) { [0]=> string(67) "藍芽空閑狀態" [1]=> string(24) "uid_label_bluetooth_idle" [2]=> string(18) "藍芽空閑狀態" } [10]=> array(3) { [0]=> string(59) "CPU 空閑狀態" [1]=> string(18) "uid_label_cpu_idle" [2]=> string(16) "CPU 空閑狀態" } [11]=> array(3) { [0]=> string(59) "語音通話" [1]=> string(22) "uid_label_radio_active" [2]=> string(12) "語音通話" } [12]=> array(3) { [0]=> string(51) "資料" [1]=> string(20) "uid_label_radio_data" [2]=> string(6) "資料" } [13]=> array(3) { [0]=> string(51) "待機" [1]=> string(20) "uid_label_radio_idle" [2]=> string(6) "待機" } [14]=> array(3) { [0]=> string(47) "未知" [1]=> string(16) "hw_label_unknown" [2]=> string(6) "未知" } [15]=> array(3) { [0]=> string(46) "螢幕" [1]=> string(15) "hw_label_screen" [2]=> string(6) "螢幕" } [16]=> array(3) { [0]=> string(42) "WLAN" [1]=> string(13) "hw_label_wlan" [2]=> string(4) "WLAN" }}
如果xml裡面的string標籤的name值是唯一的,你可以這樣子試試:
header("Content-type:text/html;charset=utf-8");
$xmlDoc = new DOMDocument();
$xmlDoc->load("test.xml");
$x = $xmlDoc->getElementsByTagName("string");
$arr = array();
foreach ($x as $item){
$arr[$item->attributes->item(0)->nodeValue] = $item->nodeValue;
}
print_r($arr);
得到的結果是
Array
(
[mode_label_longest_standby] => 超長待機[battery_info_remaining_discharging_time] => "續航時間: "[battery_info_remaining_charging_time] => "充電預估: "[ongoing_notification_battery_info_remaining_discharging_time] => "續航時間"[ongoing_notification_battery_info_remaining_charging_time] => "充電預估"[battery_info_value_unknown] => 未知[battery_info_details_title] => 電池詳情[uid_label_android_system] => Android 系統[uid_label_wlan_idle] => WLAN 空閑狀態[uid_label_bluetooth_idle] => 藍芽空閑狀態[uid_label_cpu_idle] => CPU 空閑狀態[uid_label_radio_active] => 語音通話[uid_label_radio_data] => 資料[uid_label_radio_idle] => 待機[hw_label_unknown] => 未知[hw_label_screen] => 螢幕[hw_label_wlan] => WLAN
)