使用Android中的API解析Assets中的XML文件
/**
* 使用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了啦 !!!