[置顶] Android中的XML解析与生成——DOM解析xml
16lz
2021-01-26
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());}
其他文件说明参看上篇博客!
更多相关文章
- TensorFlow在Android平台上的安装和应用
- Android如何在字符串资源文件strings.xml中通过引用的方式在一个
- Android多媒体学习六:访问网络上的Audio对应的M3U文件,实现网络音
- Android(安卓)APN的设置问题
- 【移动开发】Android中将我们平时积累的工具类打包
- 关于Android的Sensor驱动,不支持内核模块模式的驱动
- Android(安卓)如何将layout和drawable文件分文件夹存放(查看
- Android(安卓)mp3音乐播放器实例-----概述
- 【version Update版本升级】Android(安卓)自动检测版本升级