Android4.0和Android2.3,2.2以及其他版本DOM解析XML问题

来源:互联网 发布:户外徒步地图软件 编辑:程序博客网 时间:2024/05/22 01:57

今天在项目中遇到一个无奈的问题!困扰了我很久,后来和同事的代码中和一下终于发现了,这个是DOM解析xml的问题,贴代码说明问题:

问题代码如下:

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try {DocumentBuilder db = dbf.newDocumentBuilder();InputStream is = null;Document doc = null;try {is = getAssets().open("undeal.xml");doc = db.parse(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}Element rootElement = doc.getDocumentElement(); NodeList list = rootElement .getElementsByTagName("update_info");Log.v("list", "list.length()" + list.getLength());

当Log日志在小米1S(Android4.0)中打印出来的时候的时候我抑郁了:

list, list.length()0
我马上使用lephone(Android2.2),打印的结果
list, list.length()1

我认为是Android版本不兼容,我准备要换SAX解析方法的时候,我同事让我查查代码,然后我们对了一下以前的代码,然后奇迹的发现,Document,和Element的问题,在Android4.0中将element对象换成Document,OK。结果一样了,在Android4.0中一样能执行了,至于内部的方法我还没有研究,以后有机会研究研究在出blog。

正确代码:

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try {DocumentBuilder db = dbf.newDocumentBuilder();InputStream is = null;Document doc = null;try {is = getAssets().open("undeal.xml");doc = db.parse(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}Element rootElement = doc.getDocumentElement(); NodeList list = doc.getElementsByTagName("update_info");Log.v("list", "list.length()" + list.getLength());

//小米1S(Android4.0)中打印出来://list, list.length()1//我马上使用lephone(Android2.2),打印的结果//list, list.length()1

	
				
		
原创粉丝点击