DOM解析XML文件时,会将XML文件的所有内容以对象树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以对象树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。

创建DOMPersonService类

public class DOMPersonService {public static List<Person> getPersonList(InputStream inStream) throws Exception{List<Person> personList = new ArrayList();DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder  builder  = factory.newDocumentBuilder();Document document = builder.parse(inStream);//注意,此时xml文件已经都被装入内存中的document对象里了//取得根结点(元素节点)Element root = document.getDocumentElement();  NodeList nodes = root.getElementsByTagName("person");for(int i=0; i<nodes.getLength(); i++){Element personElement = (Element) nodes.item(i);Person person = new Person();//为person添加id属性值person.setId(Integer.valueOf(personElement.getAttribute("id")));NodeList childNodes = personElement.getChildNodes();//遍历孩子节点,忽略文本节点,保留并处理元素节点for(int j=0; j<childNodes.getLength(); j++){Node childNode = childNodes.item(j);if(childNode.getNodeType() == Node.ELEMENT_NODE){if("name".equals(childNode.getNodeName() )){person.setName(childNode.getFirstChild().getNodeValue());}else if("age".equals(childNode.getNodeName())){Text textNode = (Text) childNode.getFirstChild();String ageStr = textNode.getNodeValue();person.setAge(Integer.valueOf(ageStr));}}}personList.add(person);}return personList;}

测试方法

public void testDOM() throws Throwable {List<Person> personList = null;InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("person_list.xml");personList = DOMPersonService.getPersonList(inStream);Log.i("TAG", personList.toString());}

其他文件说明参看上篇博客!

更多相关文章

  1. TensorFlow在Android平台上的安装和应用
  2. Android如何在字符串资源文件strings.xml中通过引用的方式在一个
  3. Android多媒体学习六:访问网络上的Audio对应的M3U文件,实现网络音
  4. Android(安卓)APN的设置问题
  5. 【移动开发】Android中将我们平时积累的工具类打包
  6. 关于Android的Sensor驱动,不支持内核模块模式的驱动
  7. Android(安卓)如何将layout和drawable文件分文件夹存放(查看
  8. Android(安卓)mp3音乐播放器实例-----概述
  9. 【version Update版本升级】Android(安卓)自动检测版本升级

随机推荐

  1. android一个简单的线程实例
  2. android第三天--AbsoluteLayout绝对布局
  3. Android控件之——输入框TextInputLayout
  4. 像素鸟(flapybird)的简单实现
  5. android面试题(1)
  6. [Android]获取网络连接状态
  7. Android使用selector改变文字的颜色
  8. android中ProgressBar的使用SeekBar的使
  9. Android 可選文件格式瀏覽器
  10. Android xposed Hook 初探01