如何将数据从xml文件导入到sqlite数据库

时间:2014-01-14 12:56:32

标签: android xml sqlite import

我有两个用于android项目的xml文件首先包含大约550个印度地区记录,第二个文件包含大约40个印度国家记录

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

我用谷歌搜索但没有找到任何解决方案,任何人都可以提出一种方法或任何工具来做到这一点

1 个答案:

答案 0 :(得分:3)

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

假设您有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) );