第一种,使用SAXReader
[java] view plain copy
InputStream in = DBHelper.getDBHelper().getContext().getResources()
.getAssets().open("province.xml");
InputStream is = IOHelper.fromInputStreamToInputStreamInCharset(in,"utf-8");
SAXReader sr = new SAXReader();// 获取读取xml的对象。
Document document = sr.read(is);
Element root = document.getRootElement();
当然,使用这种方法还是比较麻烦的,因为需要引入dom4j的jar包。
第二种,直接使用XmlPullParser
我们查看XmlResourceParser源码的时候,就会发现XmlResourceParser实现了两个接口,AttributeSet和XmlPullParser,而实际上XmlPullParser就是帮助我们去读xml文件的。
当然还是需要获得inputstream流,但是优势就是不用引入jar包而已。
[java] view plain copy
public void test(InputStream in) {
XmlPullParserFactory factory;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(in, "UTF-8");
int evtType = xpp.getEventType();
// 一直循环,直到文档结束
while (evtType != XmlPullParser.END_DOCUMENT) {
switch (evtType) {
case XmlPullParser.START_TAG:
String tag = xpp.getName();
System.out.println(tag);
break;
case XmlPullParser.END_TAG:
break;
default:
break;
}
//获得下一个节点的信息
evtType = xpp.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}