Java 解析 XML 文件之 DOM 解析
来源:互联网 发布:微信pc客户端 mac 编辑:程序博客网 时间:2024/06/11 19:25
DOM(Document Object Model)解析
【原理】:DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取和操作文档的任意部分,是W3C的官方标注。
【优点】:1,允许应用程序对数据和结构作出更改。
2,访问是双向的,可以在任何时候在书中上下导航,获取和操作任意部分的数据。
【缺点】:1,通常需要加载整个XML文档来够着层次结构,消耗资源大。
上面的相关DOM解析的讲解是我在网上搜索到的。下面话不多说了,直接看代码。
一,我们先查看一下要解析的xml文件的格式(book.xml)
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="23">
<name>thinking in java</name>
<price>85.5</price>
</book>
<book id="20">
<name>Spring in Action</name>
<price>29.0</price>
</book>
</books>
二,就是用来解析这个book.xml的相关类了DomService类。
package com.dom.service;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import com.dom.domain.Book;public class DomService {public DomService() {}public List<Book> getBooks(File file){List<Book> list = new ArrayList<Book>();//创建一个document解析的工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();try {DocumentBuilder builder = factory.newDocumentBuilder();//获得稳定的元素节点Document document = builder.parse(file);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);}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return list;}public static void main(String[] args) {DomService service = new DomService();List<Book> list = service.getBooks(new File("d:/book.xml"));for(Book book: list){System.out.println(book.toString());}}}
三,我用了一个Book实体类,将解析的出来的数据放在Book对象里面。
package com.dom.domain;public class Book {private int id;private String name;private float price;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;}@Overridepublic String toString() {return "Book [id=" + id + ", name=" + name + ", price=" + price + "]";}}
四,就是运行结果了。
0 0
- Java 解析 XML 文件之 DOM 解析
- JAVA解析XML文件之DOM解析
- Java之DOM方式解析XML文件
- Java之DOM解析XML文件
- Java--Dom解析XML文件
- java DOM解析XML文件
- Java DOM解析XML文件
- XML文件解析之DOM解析
- java之Dom解析XML
- java简单解析xml之Dom解析
- java解析xml之DOM解析
- Java XML解析之DOM解析
- JAVA Web 开发之DOM和SAX解析XML文件
- 学习笔记-Java中的xml文件读取之DOM解析
- Java之xml文件解析一(DOM方式解析xml文件)
- DOM解析XML文件
- xml文件解析-DOM
- dom解析xml文件
- How to Compile Linux Kernel from Source to Build Custom Kernel
- javaee加密,tomcat使用自己的classloader解密
- 同样的sql传入的条件不同执行效率相差百倍的原因
- [IE兼容性]
- hibernate使用hql 查询
- Java 解析 XML 文件之 DOM 解析
- Robotium_易测云生成的自动化测试脚本(5)
- Mongodb architecture
- Hql语句注意事项总结 批量删除 批量查询
- objective-C中的"非正式协议"和“正式协议”
- Codeforces Round #218 (Div. 2) D. Vessels
- The error of C language compilation
- 运用加密技术保护Java源代码
- [Android源码解析]蓝牙扫描结果反馈的分析