我有两个 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/