2019独角兽企业重金招聘Python工程师标准>>>

DOM方式解析文档,我们将解析后得到的数据显示在一个TextView中,代码示例:
public class ActivityMain extends Activity {@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);TextViewresult = (TextView)this.findViewById(R.id.resultText);//读取xml文件List<User>userList = readXMLDOM();//显示StringBufferstrB = new StringBuffer();for(Useru:userList){strB.append(u.userId+","+u.userName+","+u.userAge+"\n");}result.setText(strB);}/*** 解析文档* @return */privateList<User> readXMLDOM() {InputStreamis = null;List<User>userList = new ArrayList<User>();//获取一个解析DOM树的工厂DocumentBuilderFactoryfactory = DocumentBuilderFactory.newInstance();try {//读取raw目录的xml文件is= getResources().openRawResource(R.raw.dom);//创建DOM文档对象DocumentBuilderbuilder = factory.newDocumentBuilder();//加载XML文档,将XML文件解析为DocumentDocumentdom = builder.parse(is);//获取DOM文档的根元素Elementroot = dom.getDocumentElement();//查找所有user节点列表NodeListitems = root.getElementsByTagName("user");for(int i = 0; i < items.getLength(); i++) {Useruser = new User();//获取user节点Elementnode = (Element) items.item(i);//获取user节点的id属性值user.userId= node.getAttribute("id");//获取user节点下的所有子节点NodeListchildsNodes = node.getChildNodes();for(int j = 0; j < childsNodes.getLength(); j++) {Node nodeChild = (Node)childsNodes.item(j);//判断是否为元素类型if(nodeChild.getNodeType() == Node.ELEMENT_NODE) {ElementchildNode = (Element) nodeChild;// 判断是否name元素if("name".equals(childNode.getNodeName())) {//获取name元素的内容user.userName= childNode.getFirstChild().getNodeValue();}else if ("age".equals(childNode.getNodeName())) {user.userAge= childNode.getFirstChild().getNodeValue();}}}userList.add(user);}} catch(Exception e) {e.printStackTrace();}finally{if(is!=null){try{//关闭输入流is.close();}catch (IOException e) {e.printStackTrace();}}}returnuserList;}
}
从上面代码中我们分析下DOM解析XML步骤:
(1)读取xml文件获取输入流对象;
(2)创建DocumentBuilderFactory 实例,得到解析器的工厂类;
(3)通过DocumentBuilderFactory 创建DocumentBuilder文档解析器;
(4)parse(InputStreamis) 方法将文档内容装入解析器;
(5)然后获取文档的根结点(Element);
(6)然后从根结点中获取我们关注的所有子节点的列表(NodeList);
(7)最后根据节点名称获取我们需要的数据。

转载于:https://my.oschina.net/xiahuawuyu/blog/83565

android 中 DOM解析xml相关推荐

  1. java中DOM解析xml文件

    本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件. 首先有一个xml文件: <?xml version=\"1.0\" en ...

  2. Java中Dom解析XML

    DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息: 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内 ...

  3. Android程序解析xml至文档中,Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 李明 30 李向梅 25 二.在service中写一个DOM解析的操作 ...

  4. Android学习笔记---Android平台1.使用dom解析xml文件

    1.使用dom解析xml文件 除了使用 SAX可以解析XML文件,大家也可以使用熟悉的DOM来解析XML文件. DOM解析XML文 件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使 ...

  5. java解析xml实例_在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...

  6. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  7. java中document解析jsp,JSP基于dom解析xml实例详解

    本文实例讲述了JSP基于dom解析xml的方法.分享给大家供大家参考,具体如下: 初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩) ...

  8. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  9. XML解析(二),DOM解析XML

    转载自   XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...

  10. Android几种解析XML方式的比较

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.使用SAX解析XML SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相 ...

最新文章

  1. Requested bean is currently in creation: Is there an unresolvable circular reference?
  2. qt 将不同的数据类型组成一个新类型_SQL 通用数据类型
  3. (3)段描述符,段选择子,LES指令
  4. windows7出现MTP usb设备驱动安装问题解决方法
  5. 大学计算机基础实训excel,大学计算机基础实训指导书
  6. 一只青蛙跳向三个台阶_在藏区流传的青蛙王子的故事
  7. RN和React路由详解及对比
  8. ubuntu配置LAMP
  9. 用navixt连接mysql连接不上_技嘉的RX 5500 XT、1650/1660 SUPER显卡现身欧亚经委会数据库:实锤两家中端新卡...
  10. java获取当前行数
  11. matlab求抛物问题,高手进,用matlab求解一维抛物方程的初边值问题 - 数学 - 小木虫 - 学术 科研 互动社区...
  12. nes 红白机模拟器 第4篇 linux 手柄驱动支持
  13. wordpress文章增加行楷和魏碑字体
  14. 解决16G(或者8G)U盘格式化后变为15M的问题
  15. Android Studio 按钮样式实现
  16. python怎么过滤标点符号大全_一行Python代码过滤标点符号等特殊字符
  17. 采购很容易,油水又多?那你来啊
  18. 34-高级路由:BGP汇总:实验五 route-map+suppress-map过滤、as-set
  19. [iOS越狱开发]安装command line tools for Xcodew
  20. TCAM与HASH表的差异

热门文章

  1. WordPress简约博客主题模板Chen主题V1.2
  2. 强大的Spring Boot启动监听器事件-初始化系统账号密码
  3. 安装kloxo。需要注意的事项
  4. MySQL入门 (六) : 字元集与资料库
  5. CSS语法和CSS优先级
  6. Moodle: Remove customise this page button from profile?
  7. PHP中逻辑运算符的高效用法---和||
  8. tomcat调优的几个方面
  9. Tomcat实战-调优方案
  10. 【AI视野·今日CV 计算机视觉论文速览 第173期】Wed, 25 Dec 2019