2014-01-14 106 views
1

我有Android项目第一个由大约550记录区在印度和第二个文件是由大约40条记录印度的国家的两个XML文件如何导入从XML文件中的数据SQLite数据库

现在我想将它导入一个包含两个字段的第一区和第二个状态的sqlite数据库,并且每个来自xml的记录应插入到单独的sqlite行中

我使用Google搜索但未找到任何解决方案任何人都可以提供一种方法或任何工具来执行此操作

+0

您需要为XML编写解析器。这些解析器将返回记录列表,然后您可以将它们插入到数据库中。首先参考http://www.androidpeople.com/android-xml-parsing-tutorial-using-saxparser –

回答

1

您可能已经找到了解决方案,但对于其他可能正在寻找类似解决方案。

假设你已经在XML数据:

<rows> 
    <row> 
     <state>Mississippi</state> 
     <district>Holmes</district> 
    </row> 

    <row> 
     <state>Texas</state> 
     <district>Cayuga ISD</district> 
    </row> 
    ... 
</rows> 

您可以使用此代码,我什么地方使用:

public class MySQLPullParser { 

    private String currTag = null; 
    private boolean firstTag = true; 

    public String parseXML(Context ctx) { 
     try { 
      StringBuilder sb = new StringBuilder(500); // give sufficient length to start with 
      sb.append("INSERT INTO " + yourTableName + " VALUES ("); 

      XmlPullParserFactory xppFactory = XmlPullParserFactory.newInstance(); 
      xppFactory.setNamespaceAware(true); 
      XmlPullParser xpp = xppFactory.newPullParser(); 

      URL yourXmlPath = new URL(url); 
      InputStream is = yourXmlPath.openConnection().getInputStream(); 

        xpp.setInput(is,null); 

        int e = xpp.getEventType(); 
      while (e != XmlPullParser.END_DOCUMENT) 
      { 
       if(e == XmlPullParser.START_TAG) { 
         currTag = xpp.getName(); 
       } 
       else if (e == XmlPullParser.END_TAG) { 
         currTag = null; 
       } 
       else if (e == XmlPullParser.TEXT) { 
        if (currTag.equals("state")) { // first table column 
          if (firstTag) 
           sb.append(xmlText + "("); // for first row insert 
          else 
           sb.append(xmlText + ",("); 
        } 

        else if (currTagType.equals("district")){ 
         sb.append("'" + xmlText + "')"); // last table column should have a closing paran ")" 
        } 
       } 
       e = xpp.next(); 
      } 

     } catch (XmlPullParserException e) { 
      e.printStackTrace(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

     return sb.toString(); 
    } 
} 

parseXML()将返回你可以执行SQL INSERT语句:

MySQLPullParser spp = new MySQLPullParser(); 
db.execSQL(spp.parseXML(mContext)); 
相关问题