android - 如何将xml文件中的数据导入到sqlite数据库中

标签 android xml sqlite import

我有两个 Android 项目的 XML 文件,第一个文件包含大约 550 个印度地区的记录,第二个文件包含大约 40 个印度各州的记录

现在我想将它导入到一个 SQLite 数据库中,该数据库由两个字段第一区和第二状态组成,并且来自 XML 的每条记录都应该插入到单独的 SQLite 行中。

我用谷歌搜索但没有找到任何解决方案,任何人都可以建议一种方法或任何工具来实现它。

最佳答案

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

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

关于android - 如何将xml文件中的数据导入到sqlite数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114140/

相关文章:

linq - Linq-to-Sqlite:无法针对System.Double类型的模型属性映射TEXT类型的sqlite列?

android - Sugar ORM 没有这样的表异常

java - 从 Android 上的根文件夹读取文件

android - 更改为最新的 Multidex 后无法解决导入 android.support.multidex.MultiDex

Android:获取 ISO 639 alpha-2 代码中的用户语言(en、pt、jp ...)

android - 横向模式 - Android

xml - 如何将 XML 的一部分转换为数据框? (适本地)

java - JDOM getChildren() 返回空列表

java - 从外部 Tomcat 目录读取可重新加载的 xml 文件

c# - 在 32 位和 64 位 C# 世界中使用 System.Data.SQLite 的选项