跳到主要內容

使用SimpleXML讀取XML資料 - PHP

SimpleXML是在php 5.0之後就是核心組成,所以是不需要額外安裝的。
(所以使用SimpleXML記得要檢查php版本喔!)

做個簡單的小範例,使用臺灣郵局 - 3+2碼郵遞區號XML檔部分資料
1
2
3
4
5
6
7
8
9
<NewDataSet>
  <Zip32>
    <Zip5>10042</Zip5>
    <City>台北市</City>
    <Area>中正區</Area>
    <Road>秀山街</Road>
    <Scope>全</Scope>
  </Zip32>
</NewDataSet>

這時如果我們只想建立一個陣列,就是City->Area陣列,也就可以取得['台北市'][0] = ['中正區']
以下是範例程式碼
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
$address = array();

$xml = simplexml_load_file("test.xml");

foreach($xml->children() as $zip){
    $city = trim((string)$zip->City);
    $area = trim((string)$zip->Area);

    $address[$city] = array($area);
}

var_dump($address);
?>


第7行與第8行為什麼要強制轉型成string,則是因為$zip->City取出來的值是物件,所以必須得轉型,否則是無法拿來作為key使用。

輸出結果如下
1
2
3
4
5
6
7
array(1) {
  ["台北市"]=>
  array(1) {
    [0]=>
    string(9) "中正區"
  }
}


參考資料:

留言

這個網誌中的熱門文章

Android 呼叫 zxing QR code scanner

今天弄個簡單的範例是關於執行QR code掃描的部分 這個方法是直接呼叫 Barcode scanner 的方法 首先在 build.gradle 的 dependencies 加上 compile 'com.google.zxing:android-integration:3.2.1' dependencies { ... compile 'com.google.zxing:android-integration:3.2.1' } 呼叫的方式則是在 Activity or Fragment 中加入執行的程式 IntentIntegrator scanner = new IntentIntegrator(mActivity); scanner. initiateScan (); 要如何得到掃描的值呢?只要 override onActivityResult 就可以囉! @Override protected void onActivityResult ( int requestCode, int resultCode, Intent data) { super . onActivityResult (requestCode, resultCode, data); IntentResult scanner = IntentIntegrator. parseActivityResult (requestCode, resultCode, data); if (scanner != null ) { String code = scanner. getContents (); // 掃描得到的字串 String format = scanner. getFormatName (); // 掃描的格式, 如 QR_CODE } } 附上參考的 java doc Class IntentIntegrator Class IntentResult

What is phpize

What is phpize According to the PHP official document : The phpize command is used to prepare the build environment for a PHP extension. If you need to build such an extension that from github or another code repositories, you can use  build tools to perform the build manually. 

Android 6.0 權限問題

因為總總原因,直到現在才重視這個問題 首先根據 官方文件所述 : 在Android 6.0 (API level 23) 之後分成兩種權限 一般權限(Normal permissions) 危險權限(Dangerous permissions) 列出危險權限的列表 Permission Group Permissions CALENDAR READ_CALENDAR WRITE_CALENDAR CAMERA CAMERA CONTACTS READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS LOCATION ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION MICROPHONE RECORD_AUDIO PHONE READ_PHONE_STATE CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS SENSORS BODY_SENSORS SMS SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS STORAGE READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE 不論一般權限與危險權限,都一樣必須在 AndroidManifest.xml 中使用 <uses-permission> 宣告 而最大的差異在於 危險權限必須另外執行請求權限的訊息框 。 附上在 Activity 實做的儲存權限範例: ... public final static int PERMISSION_CODE = 1 ; protected boolean isStoragePermissionGranted () { if (Build. VERSION . SDK_INT >= 23 ) { String permission = android. Man...