Dom解析xml
1.Dom解析xml优势:可以整个读取xml文件,作为一个元素来使用,全部放置到内存中,更快,解析起来也相对简单很多。
2.操作方式:
首先创建一个xml文件,as中有两种方式,一种是通过assert资源文件来创建,另一种是通过res/raw来创建,说明这里建立了一个filter.xml文件。
然后实现读取数据的操作:
这里分为如下几部分:
1)获取xml文件:
首先建立一个assert文件夹,建立方式为如图:
然后在assets目录中创建资源文件,创建方式为:
这里要记得在命名后面加.xml,不然无法保存为xml文件。
创建成功后如图:
然后就是编写xml文件中的属性。
具体没有特别的编写规范,符合要求即可(本文主要目的是实现获取packagename属性,所以编写截图如下):
当写完这个的时候,就可以进行获取和解析了。
2)读取xml文件的方式,主要如下:
InputStream is = mContext.getAssets().open("filter.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(is);
doc.getDocumentElement().normalize();
解释:
1、调用 DocumentBuilderFactory.newInstance() 方法得到 DOM 解析器工厂类实例。
2、调用解析器工厂实例类的 newDocumentBuilder() 方法得到 DOM 解析器对象
3、调用 DOM 解析器对象的 parse() 方法解析 XML 文档得到代表整个文档的 Document 对象
原理解释:
可以参考如图(原文链接:http://www.cnblogs.com/plokmju/p/android_DOMforXML.html):
Node:获取的是最基本的一个元素,比如获得最基本的一个参数的值。
Element:虽然叫元素,但不是固定大小的,可以是包含很多个的,也可以是包含一个的,同时也是可以不同类型的。
NodeList:类似于数组的使用方式,包含的是多个相同类型的element,为了使用的方便,一般会获取NodeList的length,通过for循环来历遍使用。
这里附上Demo,方便大家参考:
下载地址 http://download.****.net/download/hacker_crazy/8782921