以下文章是从老罗教学中的总结,感谢老罗
Ø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(); } } }
相关推荐
NULL 博文链接:https://andy2019.iteye.com/blog/2148059
NULL 博文链接:https://andy2019.iteye.com/blog/2148057
提供了android中使用dom、pull、sax三种方式进行xml解析,xml文件放置在assets文件夹下,view绑定使用butterknife
Android XML解析 SAX DOM Pull 以person类为例进行解析,适合初学者学习
java程序中使用dom解析xml文件介绍
010302_XML解析 —— DOM 010303_XML解析 —— SAX 010304_XML解析 —— JDOM 010305_XML解析 —— DOM4J 010306_使用JavaScript操作DOM 010401_Tomcat服务器的安装及配置 020501_注释及Scriptlet 020502_page指令 ...
Android 创建与解析XML Dom4j方式
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax
XML解析技术DOM4J解析.doc
包括android代码实例以及个人对Dom解析xml文件的总结文档。
android xml 解析 生成xml sax pull dom
安卓Android源码——比较通用的xml解析方法.rar
android xml pull解析示例,自己mark下,备忘
android下解析xml文件的demo
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
XML解析器Xerces-J-bin.2.9.1
DOM技术解析XML,获得XML文件中根节点以及所有子节点里面的信息。