zoukankan      html  css  js  c++  java
  • 使用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了啦 !!!

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/jinglingJuly/p/2984153.html
Copyright © 2011-2022 走看看