Android 使用DOM读取XML文件

  • 格式:pdf
  • 大小:34.92 KB
  • 文档页数:1

Android 使用DOM读取XML文件
除了可以使用 SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件。

DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。

使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。

但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。

Java代码:Java代码
1.importcn.android.xml.domain.Person;
2.
3.
4./**使用Dom解析xml文件*/
5.publicclassDomXMLReader{
6.publicstaticList<Person>readXML(InputStreaminStream){
7.List<Person>persons=newArrayList<Person>();
8.DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
9.try{
10.DocumentBuilderbuilder=factory.newDocumentBuilder();
11.Documentdom=builder.parse(inStream);
12.Elementroot=dom.getDocumentElement();
13.NodeListitems=root.getElementsByTagName("person");//查找所有person节点
14.
15.
16.for(inti=0;i<items.getLength();i++){
17.
18.
19.Personperson=newPerson();
20.//得到第一个person节点
21.ElementpersonNode=(Element)items.item(i);
22.//获取person节点的id属性值
23.person.setId(newInteger(personNode.getAttribute("id")));
24.//获取person节点下的所有子节点(标签之间的空白节点和name/age元素)
25.NodeListchildsNodes=personNode.getChildNodes();
26.for(intj=0;j<childsNodes.getLength();j++){
27.Nodenode=(Node)childsNodes.item(j);//判断是否为元素类型
28.if(node.getNodeType()==Node.ELEMENT_NODE){
29.ElementchildNode=(Element)node;
30.//判断是否name元素
31.if("name".equals(childNode.getNodeName())){
32.//获取name元素下Text节点,然后从Text节点获取数据
33.person.setName(childNode.getFirstChild().getNodeValue());
34.}elseif(“age”.equals(childNode.getNodeName())){
35.person.setAge(newShort(childNode.getFirstChild().getNodeValue()));
36.}
37.}
38.}
39.persons.add(person);
40.}
41.inStream.close();
42.}catch(Exceptione){
43.e.printStackTrace();
44.}
45.returnpersons;
46.}。