使用Android中的API解析Assets中的XML檔案

來源:互聯網
上載者:User

/**
* 使用Android中的API解析Assets中的XML檔案,這裡好像必須用這個。用Java內建的不行,好像是因為編譯過。。。。。
*
* @param fileName 此檔案必須在assets檔案夾下,要開啟的xml檔案名稱。例如: "firstData/bg1_1_10.xml"
* @param tbName 要插入資料庫的表名,資料庫中的表結構必須和XML檔案中的資料結構一一對應,否則會在插入資料庫的時候出錯
*/

 

 1     /** 2      * 使用Android中的API解析Assets中的XML檔案,這裡好像必須用這個。用Java內建的不行,好像是因為編譯過。。。。。 3      *  4      * @param fileName 此檔案必須在assets檔案夾下,要開啟的xml檔案名稱。例如: "firstData/bg1_1_10.xml" 5      * @param tbName 要插入資料庫的表名,資料庫中的表結構必須和XML檔案中的資料結構一一對應,否則會在插入資料庫的時候出錯 6      */ 7     private void insertDataFromAssetsXML(String fileName, String tbName) { 8         try { 9             XmlPullParserFactory factory;10             factory = XmlPullParserFactory.newInstance();11             factory.setNamespaceAware(true);12             XmlPullParser xpp;13             xpp = factory.newPullParser();14             xpp.setInput(getResources().getAssets().open(fileName),null);15             16             int eventType = xpp.getEventType();17             boolean needs = false ;18             String sql = "" ; // 插入資料庫的sql語句19             sql = "insert into " + tbName + " values (" ;20             21             db.sld.beginTransaction() ; // 開始交易處理22             while (eventType != XmlPullParser.END_DOCUMENT) {23                 24                 if (eventType == XmlPullParser.START_DOCUMENT) {25                 } else if (eventType == XmlPullParser.START_TAG) {26                     if(!xpp.getName().equals("RECORD") && !xpp.getName().equals("RECORDS")) {27                         needs = true ;28                     }29                 } else if (eventType == XmlPullParser.END_TAG) {30                     //Log.e("xml", "End tag " + xpp.getName());31                     if(xpp.getName().equals("RECORD")) {32                         sql = sql.substring(0, sql.length()-1) ;33                         sql += ") ;" ;34                         sql = sql.replace("\n", "") ;35 //                        Log.w("sql", sql) ;36                         db.insert(sql); // 插入資料庫37                         sql = "insert into " + tbName + " values (" ;38                     }39                 } else if (eventType == XmlPullParser.TEXT) {40                     if (!xpp.getText().equals("") && needs) {41                         sql += "'"+ xpp.getText() +"'," ;42                         needs = false ;43                     }44                 }45                 eventType = xpp.next();46             }47             48             db.sld.setTransactionSuccessful() ; // 開始交易處理49             db.sld.endTransaction(); // 交易處理完成50             51         } catch (XmlPullParserException e) {52             e.printStackTrace();53         } catch (IOException e) {54             e.printStackTrace();55         } catch (Exception e) {56             e.printStackTrace();57         }58     }

 

使用:insertDataFromAssetsXML("firstData/imp_multilevel.xml", "imp_multilevel") ;

imp_multilevel這個是sqlite資料庫的表名喔。

還有上面的db是一個sqlite資料庫物件額,自己加上去就ok了啦 !!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.