我有两个用于android项目的xml文件首先包含大约550个印度地区记录,第二个文件包含大约40个印度国家记录
现在我想在sqlite数据库中导入它,该数据库包含两个字段,第一个区域和第二个状态,xml中的每个记录都应该插入到sqlite的单独行中
我用谷歌搜索但没有找到任何解决方案,任何人都可以提出一种方法或任何工具来做到这一点
答案 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) );