[java开发篇][dom模块] 遍历解析xml
http://blog.csdn.net/andie_guo/article/details/24844351
XML DOM节点树
XML DOM将XML文档作为树结构,树结构称为一个节点树。所有的节点可以通过树访问,它们的内容可以被修改或删除,也可以建立新的元素。节点树用于显示节点集和它们之间的联系。下图呈现的是books.XML文件的节点树。

常用的几个对象:
1)Element类:
是Node类最主要的子对象,被广泛使用,在元素中可以包含属性,因而Element中有存取其属性的方法。
2)Node类:
Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等。
3)NodeList类:
代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组。
DOM XML Parser 解析XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited by XMLSpy -->
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
Book.java:该对象是一个实体Bean,其字段信息对应着xml文件里的元素字段,由于篇幅有限,读者自行生成get、set方法 。
package com.andieguo.xmldemo;
public class Book {
private String category;
private String titleLang;
private String title;
private String author;
private Integer year;
private Double price;
@Override
public String toString() {
return "Book [category=" + category + ", titleLang=" + titleLang + ", title=" + title + ", author=" + author + ", year=" + year + ", price=" + price + "]";
}
//生成字段的get、set方法
}
ReadXMLFile.java :解析XML文件并存入List<Book>集合。
package com.andieguo.xmldemo; import java.io.File;
import java.util.ArrayList;
import java.util.List; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; public class ReadXMLFile { public static void main(String[] args) {
File file = new File("src/com/andieguo/xmldemo/books.xml");//books.xml文件应放在和ReadXMLFile.java同级的文件夹下
List<Book> books = readXMLFile(file);
for (Book book : books) {
System.out.println(book.toString());
}
} public static List<Book> readXMLFile(File file) {
List<Book> lists = new ArrayList<Book>();
try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
NodeList bookList = doc.getElementsByTagName("book");
for (int i = 0; i < bookList.getLength(); i++) {
Node bookNode = bookList.item(i);
if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
Element bookElement = (Element) bookNode;
Book book = new Book();
book.setCategory(bookElement.getAttribute("category"));
Element titleElement = (Element) bookElement.getElementsByTagName("title").item(0);
book.setTitle(titleElement.getTextContent());
book.setTitleLang(titleElement.getAttribute("lang"));
NodeList authorList = bookElement.getElementsByTagName("author");
String author = "";
for (int j = 0; j < authorList.getLength(); j++) {
author = author + authorList.item(j).getTextContent() + "/";
}
author = author.substring(0, author.length() - 1);
book.setAuthor(author);
book.setYear(Integer.valueOf(bookElement.getElementsByTagName("year").item(0).getTextContent()));
book.setPrice(Double.valueOf(bookElement.getElementsByTagName("price").item(0).getTextContent()));
lists.add(book);
} }
} catch (Exception e) {
e.printStackTrace();
}
return lists;
}
}
运行结果如图所示:

- package com.andieguo.xmldemo;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.List;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- public class ReadXMLFile {
- public static void main(String[] args) {
- File file = new File("src/com/andieguo/xmldemo/books.xml");//books.xml文件应放在和ReadXMLFile.java同级的文件夹下
- List<Book> books = readXMLFile(file);
- for (Book book : books) {
- System.out.println(book.toString());
- }
- }
- public static List<Book> readXMLFile(File file) {
- List<Book> lists = new ArrayList<Book>();
- try {
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(file);
- NodeList bookList = doc.getElementsByTagName("book");
- for (int i = 0; i < bookList.getLength(); i++) {
- Node bookNode = bookList.item(i);
- if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
- Element bookElement = (Element) bookNode;
- Book book = new Book();
- book.setCategory(bookElement.getAttribute("category"));
- Element titleElement = (Element) bookElement.getElementsByTagName("title").item(0);
- book.setTitle(titleElement.getTextContent());
- book.setTitleLang(titleElement.getAttribute("lang"));
- NodeList authorList = bookElement.getElementsByTagName("author");
- String author = "";
- for (int j = 0; j < authorList.getLength(); j++) {
- author = author + authorList.item(j).getTextContent() + "/";
- }
- author = author.substring(0, author.length() - 1);
- book.setAuthor(author);
- book.setYear(Integer.valueOf(bookElement.getElementsByTagName("year").item(0).getTextContent()));
- book.setPrice(Double.valueOf(bookElement.getElementsByTagName("price").item(0).getTextContent()));
- lists.add(book);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return lists;
- }
- }
[java开发篇][dom模块] 遍历解析xml的更多相关文章
- [java开发篇][dom4j模块]遍历,解析xml
package com.softwinner.performance.benchmark; /** * Created by Administrator on 2017/7/21. */ import ...
- [java开发篇][dom4j模块] 遍历xml文件
http://blog.csdn.net/chenleixing/article/details/44353491 在android studio 导入dom4j库(build-gradle(Moud ...
- Java sax、dom、pull解析xml
-------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...
- Dom,pull,Sax解析XML
本篇随笔将详细讲解如何在Android当中解析服务器端传过来的XML数据,这里将会介绍解析xml数据格式的三种方式,分别是DOM.SAX以及PULL. 一.DOM解析XML 我们首先来看看DOM(Do ...
- python XML文件解析:用xml.dom.minidom来解析xml文件
python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...
- Dom方法,解析XML文件
Dom方法,解析XML文件的基本操作 package com.demo.xml.jaxp; import java.io.IOException; import javax.xml.parsers.D ...
- nodejs模块xml2js解析xml的坑
在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...
- Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术
一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...
- Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件,封装函数
总结了一下使用Python对xml文件的解析,用到的模块儿如下: 分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定信息字段. from xml.dom.minidom im ...
随机推荐
- idea前后端分离搭建 JavaWeb项目
我们小组在开发的时候, 承诺了前后端分离, 那么就要求前端和后端需要分开搭建. 不能同时放在一个工程项目中. 大致的思路是开启两个Tomcat, 一个跑前端页面, 一个跑后端程序. 1. idea打开 ...
- python之*的魔性用法
1. *在函数中的作用 聚合 在函数定义时聚合 def eat(args): print('我请你吃:',args) eat('蒸羊羔儿') # 输出结果 # 我请你吃: 蒸羊羔儿 打散 在函数执行时 ...
- C#动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类的常用属性和方法 1. ArrayList类 ...
- 基于matlab的蓝色车牌定位与识别---识别
接着昨天的工作,把最后一部分识别讲完. 关于字符识别这块,一种最省事的办法是匹配识别,将所得的字符和自己的标准字符库相减,计算所得结果,值最小的即为识别的结果.不过这种方法是在所得字符较为标准的情况, ...
- python从列表中删除相邻重复元素
这里以一个栗子来用三种方法实现,输入a=['1','1','2','2','1','1'],输出b=['1', '2', '1'] 方法一: list1 = ['] def del_adjacent( ...
- 【Python学习之六】高阶函数1(map、reduce、filter、sorted)
1.map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.示例: >>> def ...
- vue_music:封装scroll.vue组件
在项目中经常用到滚动,结合Better-scroll封装了sroll.vue组件参考链接:https://ustbhuangyi.github.io...http://www.imooc.com/ar ...
- 《linux设备驱动开发详解》笔记——18 ARM linux设备树
18.1 设备树的起源 linux 2.6及之前,大量板级信息被硬编码到内核里,十分庞大,大量冗余代码: linux 2.6之前,引入了设备树: 设备树源于OpenFirmware,描述硬件的数据结构 ...
- poj-3278 catch that cow(搜索题)
题目描述: Farmer John has been informed of the location of a fugitive cow and wants to catch her immedia ...
- 【HIHOCODER 1599】逃离迷宫4
描述 小Hi被坏女巫抓进一座由无限多个格子组成的矩阵迷宫. 小Hi一开始处于迷宫(x, y)的位置,迷宫的出口在(a, b).小Hi发现迷宫被女巫施加了魔法,假设当前他处在(x, y)的位置,那么他只 ...