Dom解析XMl文档
XMl文档
<?xml version = "1.0" encoding = "UTF-8"?>
<books>
<book bookno="001">
<title> java 编程</title>
<author> me </author>
<price> 80 </price>
</book>
<book bookno="002">
<title> android 编程</title>
<author> me </author>
<price> 70 </price>
</book>
</books>
Dom解析程序
/*
* Dom 将文档进行扫描建立树状document文档有全部的节点 根节点为文档 子节点为每个实体 每个实体有属性子节点
* 对document 文档进行遍历 输出文档内容
* */
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; public class DomXMLParser implements XMLParser { @Override
public List<Book> parseXML(String filename) {
List<Book> list = new ArrayList<Book>();
//文档生成器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document document = null;
try {
//文档生成器对象
DocumentBuilder builder = factory.newDocumentBuilder();
//解析得到文档对象
document = builder.parse(new File(filename));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//导入w3c中的node类
Node rootnode = (Node) document.getDocumentElement();
//获得book元素列表
NodeList bookelementlist = rootnode.getChildNodes();
for(int i = 0 ;i<bookelementlist.getLength();i++){
// 获得单个book元素
Node bookelement = (Node) bookelementlist.item(i);
if(bookelement.getNodeName().equals("book")){
Book book =new Book();
NamedNodeMap map = bookelement.getAttributes();
Node booknonode = (Node) map.getNamedItem("bookno");
String booknostring = booknonode.getNodeValue();
book.setNo(booknostring.trim());
NodeList subbookelementlist = bookelement.getChildNodes();
for(int j = 0;j<subbookelementlist.getLength();j++){
Node subelementnode = (Node) subbookelementlist.item(j);
String subelementnamestring = subelementnode.getNodeName();
if(subelementnamestring.equals("title")){
book.setAuthor((subelementnode.getTextContent().trim()));
}
if(subelementnamestring.equals("author")){
book.setTitle(subelementnode.getTextContent().trim());
}
if(subelementnamestring.equals("price")){
book.setPrice(Double.parseDouble(subelementnode.getTextContent().trim()));
}
}
list.add(book);
}
}
return list;
} public static void main(String[] args) {
DomXMLParser parser = new DomXMLParser();
List<Book> list = parser.parseXML("src\\book.xml"); System.out.println("解析结果:");
for(Book book:list){
System.out.println(book);
} } }
Dom解析XMl文档的更多相关文章
- 使用DOM解析XML文档
简单介绍一下使用DOM解析XML文档,解析XML文件案例: <?xml version="1.0" encoding="UTF-8"?> -< ...
- 精讲 org.w3c.dom(java dom)解析XML文档
org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...
- org.w3c.dom(java dom)解析XML文档
位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...
- Java中Dom解析xml文档
xml文档 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
- java解析xml文档(dom)
DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...
- DOM生成XML文档与解析XML文档(JUNIT测试)
package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术
一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...
- JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)
使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...
随机推荐
- BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】
题目 FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj) ...
- cf493E Vasya and Polynomial
Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...
- 【angularjs学习】简单的语法
<div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country ...
- 转:关于bugfree的一些不得不说的事
昨天公司说要做一个工作流程控制系统,经朋友建议,尝试使用禅道进行管理,自己试用了下,感觉非常不错.下午看朋友发的关于禅道和bugfree的恩恩怨怨,更加佩服禅道的项目主管. 原文链接:http://w ...
- 标准C程序设计七---11
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- Laravel5.1的控制器分组
Laravel5.1的控制器分组 默认的控制器时直接在app\Http\Controllers下,创建分组名字,路由配置使用:分组名\控制器名@方法名.
- hdu 4882 /按排顺序使序列最优问题
题意: 安排一个序列,该序列每个数有俩个属性:t[i].val[i].计算一个点的价值:到目前为止的总时间*val[i].,,求 安排顺序后使得 计算所有点的价值之和最小. 思路:对于任意相邻俩项, ...
- Oracle 12c PDB和CDB全局用户权限问题
Oracle12c版本中引入了新的CDB和PDB 默认登陆CDB后创建的用户为全局用户必须以c##开头 如果要访问CDB中的表,可以用GRANT命令赋权 但是上面的赋权并不会再PDB中生效 如果要这个 ...
- 浅谈Java字符串
从概念上而言,Java字符串就是Unicode字符序列.由于Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String,每个用双引号的括起来的字符串都是String类的一个实 ...
- [转] java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...