【问题标题】:how to import data from xml file to sqlite database如何将xml文件中的数据导入sqlite数据库
【发布时间】:2014-02-02 13:08:42
【问题描述】:

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

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

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

【问题讨论】:

标签: android xml sqlite import


【解决方案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) );

【讨论】:

  • 我看起来像这样,请我们找个房间聊天,因为我声明了一个 xml,我已经将它解析到 RecyclerView 用于 GridLayout 到 Fragment,但我现在需要编辑数据或添加新数据.
  • @Spritzig 很抱歉让您失望,但这是 4 年前的事了。我已经离开了 Android/Java 开发,不确定我能不能对你有多大帮助。如果你。如果你还想谈,我很乐意谈
  • 谢谢我能做到。
  • 哇。这个答案对我没有帮助,但我很感激@qais 愿意回应并提供帮助,尽管他已经离开了现场
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
相关资源
最近更新 更多