Android -使用DOM(文档对象模型)解析XML文件
2012-11-17 23:45
861 查看
Android -使用DOM(文档对象模型)解析XML文件
1. 介绍
DOM(Document Object Model)是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。在DOM中,文档被模拟为树状,其中XML语法的每个组成部分(例如元素或文本内容)都被表示为一个节点。作为一种API,DOM允许用户遍历文档树,从父节点移动到子节点和兄弟节点等,并利用某种节点类型特有的属性(元素具有属性,而文本具有文本数据)。DOM被设计为与语言无关。OMG(object
Management Group,对象管理组)的CORBA interface Definition Language 可用于表示DOM节点和支持接口。通常,DOM比SAX更容易掌握,因为它没有设计回调和复杂的状态管理。然而,DOM的实现常常将所有XML节点保存在内存中,这使处理较大的文档变得效率低下。
下面解析一段xml文件:version.xml
2. 节点 (xml文档中的每个成分都是一个节点)
DOM是这样规定的:
(1)整个文档时一个文档节点
(2)每个XML标签是一个元素节点
(3)包含在XML元素中的文本时文本节点。
(4)每一个XML属性是一个属性节点
(5)注释属于注释节点
在上图中,根节点是<update>.文档的其他节点都被包含在<update>中。
3. DOM基本的节点类型
·Node-DOM基本的数据类型
·Element-最主要处理的对象是Element
·Attr-代表一个元素的属性
·Text-一个Element或Attr的实际内容。
·Document-代表整个XML文档,一个Document对象通常也被称为一棵DOM树
4. 常犯错误:文本存储在哪里?
元素节点的文本时放在TextNode中的。可以说<version>有一个TextNodee,它的值是2,而不可以说<version>元素的值是2
5.等级关系
·在节点树中,顶端的节点成为根节点。
·根节点之外的每个节点都有一个父节点。
·节点可以有任何数量的子节点;
·叶子是没有子节点的节点。
·同级及节点是拥有父节点的节点。
6. DOM常用方法
·Document.getDocumentElement():返回文档的根(root)元素。
·Node.getNextSibling() and Node.getPreviousSibling():这些方法返回下一个或前一个给定Node的同胞。
·Node.getFirstChild() and Node.getLastChild():返回给定Node的第一个子女。
·Node.getAttribute(attrName):对给定的Node返回给定名称的属性。
实例:
1. 介绍
DOM(Document Object Model)是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。在DOM中,文档被模拟为树状,其中XML语法的每个组成部分(例如元素或文本内容)都被表示为一个节点。作为一种API,DOM允许用户遍历文档树,从父节点移动到子节点和兄弟节点等,并利用某种节点类型特有的属性(元素具有属性,而文本具有文本数据)。DOM被设计为与语言无关。OMG(object
Management Group,对象管理组)的CORBA interface Definition Language 可用于表示DOM节点和支持接口。通常,DOM比SAX更容易掌握,因为它没有设计回调和复杂的状态管理。然而,DOM的实现常常将所有XML节点保存在内存中,这使处理较大的文档变得效率低下。
下面解析一段xml文件:version.xml
<update> <version>2</version> <name>baidunews_v100.apk</name> <url>http://softdl1.tech.qq.com/soft/92/baidunews_v100.apk</url> </update>
2. 节点 (xml文档中的每个成分都是一个节点)
DOM是这样规定的:
(1)整个文档时一个文档节点
(2)每个XML标签是一个元素节点
(3)包含在XML元素中的文本时文本节点。
(4)每一个XML属性是一个属性节点
(5)注释属于注释节点
在上图中,根节点是<update>.文档的其他节点都被包含在<update>中。
3. DOM基本的节点类型
·Node-DOM基本的数据类型
·Element-最主要处理的对象是Element
·Attr-代表一个元素的属性
·Text-一个Element或Attr的实际内容。
·Document-代表整个XML文档,一个Document对象通常也被称为一棵DOM树
4. 常犯错误:文本存储在哪里?
元素节点的文本时放在TextNode中的。可以说<version>有一个TextNodee,它的值是2,而不可以说<version>元素的值是2
5.等级关系
·在节点树中,顶端的节点成为根节点。
·根节点之外的每个节点都有一个父节点。
·节点可以有任何数量的子节点;
·叶子是没有子节点的节点。
·同级及节点是拥有父节点的节点。
6. DOM常用方法
·Document.getDocumentElement():返回文档的根(root)元素。
·Node.getNextSibling() and Node.getPreviousSibling():这些方法返回下一个或前一个给定Node的同胞。
·Node.getFirstChild() and Node.getLastChild():返回给定Node的第一个子女。
·Node.getAttribute(attrName):对给定的Node返回给定名称的属性。
实例:
public class ParseXmlService { public HashMap<String, String> parseXml(InputStream inStream) throws Exception { HashMap<String, String> hashMap = new HashMap<String, String>(); // 实例化一个文档构建器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 通过文档构建器工厂获取一个文档构建器 DocumentBuilder builder = factory.newDocumentBuilder(); // 通过文档通过文档构建器构建一个文档实例 Document document = builder.parse(inStream); //获取XML文件根节点 Element root = document.getDocumentElement(); //获得所有子节点 NodeList childNodes = root.getChildNodes(); for (int j = 0; j < childNodes.getLength(); j++) { //遍历子节点 Node childNode = (Node) childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE) { Element childElement = (Element) childNode; //版本号 if ("version".equals(childElement.getNodeName())) { hashMap.put("version",childElement.getFirstChild().getNodeValue()); } //软件名称 else if (("name".equals(childElement.getNodeName()))) { hashMap.put("name",childElement.getFirstChild().getNodeValue()); } //下载地址 else if (("url".equals(childElement.getNodeName()))) { hashMap.put("url",childElement.getFirstChild().getNodeValue()); } } } return hashMap; } }
相关文章推荐
- Android -使用DOM(文档对象模型)解析XML文件
- Android -使用DOM(文档对象模型)解析XML文件
- XML 文档对象模型----加载和使用XmlDocument (w3c DOM)
- Android 使用Dom与SAX解析xml文档的方式
- android中使用SAX, DOM, 或者pull 来解析XML文档
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android-使用DOM解析与生成XML文件
- Android数据存储——2.文件存储_C_DOM解析XML文档
- Android数据存储——2.文件存储_C_DOM解析XML文档
- Android 使用SAX或者DOM或者pull解析XML文件
- Android 使用SAX或者DOM或者pull解析XML文件
- cocos2d-x3.10 使用tinyxml2在Android配合FileUtilsAndroid解析XML文件
- Android数据存储——2.文件存储_E_Pull解析XML文档
- Android使用PULL解析和生成XML文件
- 使用DOM解析XML的文件属性名和属性值、节点名和节点值
- XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象
- 【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值
- 使用DOM,SAX解析XML文档
- XML 文档对象模型---- 将XML与XmlDocument (w3c DOM) 一起保存