2014-01-14 141 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)); 
相關問題