關於 PHP 中如何解析 XML 的問題

來源:互聯網
上載者:User

我現在要處理這樣一個 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

)

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.