以下文章是从老罗教学中的总结,感谢老罗
ØDOM是一种用于XML文档对象模型,可用于直接访问XML文档的各个部位,在DOM中文档被模拟为树
状,其中XML语法的每一个组成部分都表示一个节点,DOM允许用户遍历文档树,从父节点移动到子节点和
兄弟节点。并利用某节点类型特有的属性(元素具有属性,文本节点具有文本数据)
Ø节点(XML文档中的每一个成分都是一个节点)
ØDOM是这样规定的:
Ø整个文档是一个节点文档
Ø每一个XML标签是一个元素节点
Ø包含在XML元素中的文本是文本节点
Ø每一个XML属性是一个属性节点
需要解析的XML格式为:
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="12"> <name>疯狂Java讲义</name> <price>99元</price> </book> <book id="15"> <name>Android网络开发技术实战经典</name> <price>69元</price> </book> </books>
首先创建实体类
package com.dom.xml.domain; public class Book { private int id; private String name; private float price; public Book() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } @Override public String toString() { return "Book [id=" + id + ", name=" + name + ", price=" + price + "]"; } }
创建返回输入流的工具类
package com.dom.xml.http; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class HttpUtils { public HttpUtils() { // TODO Auto-generated constructor stub } public static InputStream getXML(String path) { InputStream inputStream = null; try { URL url = new URL(path); if (url != null) { HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setConnectTimeout(3000); connection.setDoInput(true); connection.setRequestMethod("GET"); int code = connection.getResponseCode(); if (code == 200) { inputStream = connection.getInputStream(); } } } catch (Exception e) { // TODO: handle exception } return inputStream; } }
创建service,并包含测试方法
package com.dom.xml.service; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.soap.Node; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.dom.xml.domain.Book; import com.dom.xml.http.HttpUtils; public class DomService { public DomService() { // TODO Auto-generated constructor stub } public List<Book> getBooks(InputStream inputStream) throws Exception { List<Book> list = new ArrayList<Book>(); // 创建一个document解析的工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(inputStream); Element element = document.getDocumentElement();// 获得稳定的元素节点 NodeList bookNodes = element.getElementsByTagName("book"); for (int i = 0; i < bookNodes.getLength(); i++) { Element bookeElement = (Element) bookNodes.item(i); Book book = new Book(); book.setId(Integer.parseInt(bookeElement.getAttribute("id"))); NodeList childNodes = bookeElement.getChildNodes(); for (int j = 0; j < childNodes.getLength(); j++) { if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) { if ("name".equals(childNodes.item(j).getNodeName())) { book.setName(childNodes.item(j).getFirstChild() .getNodeValue()); } else if ("price".equals(childNodes.item(j).getNodeName())) { book.setPrice(Float.parseFloat(childNodes.item(j) .getFirstChild().getNodeValue())); } } } list.add(book); } return list; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String path = "http://192.168.0.102:8080/myhttp/book.xml"; InputStream inputStream = HttpUtils.getXML(path); DomService service = new DomService(); try { List<Book> list = service.getBooks(inputStream); for (Book book : list) { System.out.println(book.toString()); } } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
XML解析是将XML文档转换为程序可以理解的结构化数据的过程。本文主要关注Android中的Pull解析方式来处理XML,这是一种轻量级、低内存占用的解析方法。 **什么是XML Pull解析** XML Pull解析器(XML Pull Parser)...
本资料包“安卓Android源码——比较通用的xml解析方法”将深入探讨在Android平台上解析XML的多种方法。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构,便于遍历和...
在本主题"Android之PULL解析XML文件——新浪微博客户端首页效果"中,我们将深入探讨如何利用PULL解析器(PullParser)来处理XML数据,从而实现类似新浪微博客户端首页的动态效果。这种效果通常包括新闻标题、摘要、...
《安卓Android源码解析——XML DOM解析框架》 在安卓Android开发中,XML(eXtensible Markup Language)作为一种标记语言,广泛用于数据交换、配置文件等场景。XML文档对象模型(Document Object Model, DOM)是...
《深入解析Android XML DOM解析机制》 XML(Extensible Markup Language)作为一种通用的数据交换格式,在移动开发领域,尤其是在Android系统中扮演着重要角色。本文将深入探讨Android平台下的XML DOM解析机制,...
Dom方式创建与解析XML文档是一种使用编程语言,如Java,在Android平台实现的方式。这种方式利用了DOM(文档对象模型)的API,其中JAXP(Java API for XML Processing)提供的DocumentBuilder类是用来创建和解析XML...
Android SDK还提供了另一种解析XML的方式——`XmlPullParser`,它结合了DOM和SAX的优点,既允许向前查找,又不会一次性加载整个文档,适合Android资源文件的解析。 总之,理解DOM方式在Android中的应用是开发者必备...
本资源“安卓Android源码——比较通用的xml解析方法.zip”显然聚焦于探讨在Android平台上解析XML的不同方法。这里我们将深入探讨两种主要的XML解析技术:SAX(Simple API for XML)和DOM(Document Object Model),...
本项目主要关注的是XML的创建和使用Pull解析器来解析XML,这是Android系统中处理XML数据的一种高效方法。接下来,我们将详细讨论这两个知识点。 首先,XML(Extensible Markup Language)是一种用于标记数据的语言...
本篇文章将详细介绍如何在Android中封装一个基于Pull解析的XML处理工具,并演示如何直接调用这个工具进行XML解析。 Android支持两种主要的XML解析方式:DOM(Document Object Model)解析和SAX(Simple API for XML...
1. 布局解析:Android系统使用DOM解析XML布局文件,构建View层次结构。 2. 资源文件:如字符串、颜色、尺寸等资源,通过DOM或Android的Resource类进行解析。 3. 配置文件:如AndroidManifest.xml,系统使用DOM解析以...
总结来说,Android中解析XML时,DOM适用于小型且需要频繁访问的文件,SAX和Pull解析适合大型文件或资源有限的环境。选择哪种解析方式取决于具体应用场景和性能需求。理解并熟练掌握这三种解析方式,将有助于提升...
总结,Android解析XML的三种方法——SAX、DOM和PULL,各有适用场景。理解它们的工作原理和优缺点,可以帮助我们更好地选择和运用XML解析技术,提高应用的效率和用户体验。在实践中不断学习和探索,才能真正掌握这些...
Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...
除了DOM和SAX,Android还提供了另一种解析XML的方式——Pull解析器(PullParser),它是基于事件驱动的轻量级解析器,类似于SAX,但更易于使用。`android.util.Xml`提供了一个`PullParser`的实现。 示例代码: ```...
"android实例xml解析"这个主题主要涉及如何在Android应用中处理XML文件,包括读取、解析和操作XML内容。以下是对这个主题的详细阐述: 1. XML简介: XML(eXtensible Markup Language)是一种可扩展标记语言,它...
本篇将详细介绍Android中XML解析的两种主要方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 **DOM解析** DOM解析器将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个节点...
二、Android中的XML解析库 1. Android自带的XmlPullParser:这是Android系统提供的一个接口,用于实现Pull解析,它可以顺序读取XML文档并返回当前解析到的事件类型。 2. org.xmlpull.v1.XmlPullParserFactory:这...