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文档的更多相关文章

  1. 使用DOM解析XML文档

    简单介绍一下使用DOM解析XML文档,解析XML文件案例: <?xml version="1.0" encoding="UTF-8"?> -< ...

  2. 精讲 org.w3c.dom(java dom)解析XML文档

    org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...

  3. org.w3c.dom(java dom)解析XML文档

    位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...

  4. Java中Dom解析xml文档

    xml文档 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

  5. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  6. DOM生成XML文档与解析XML文档(JUNIT测试)

    package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...

  7. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  8. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  9. 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 ...

随机推荐

  1. BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】

    题目 FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj) ...

  2. cf493E Vasya and Polynomial

    Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...

  3. 【angularjs学习】简单的语法

    <div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country ...

  4. 转:关于bugfree的一些不得不说的事

    昨天公司说要做一个工作流程控制系统,经朋友建议,尝试使用禅道进行管理,自己试用了下,感觉非常不错.下午看朋友发的关于禅道和bugfree的恩恩怨怨,更加佩服禅道的项目主管. 原文链接:http://w ...

  5. 标准C程序设计七---11

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  6. Laravel5.1的控制器分组

    Laravel5.1的控制器分组 默认的控制器时直接在app\Http\Controllers下,创建分组名字,路由配置使用:分组名\控制器名@方法名.

  7. hdu 4882 /按排顺序使序列最优问题

    题意: 安排一个序列,该序列每个数有俩个属性:t[i].val[i].计算一个点的价值:到目前为止的总时间*val[i].,,求  安排顺序后使得 计算所有点的价值之和最小. 思路:对于任意相邻俩项, ...

  8. Oracle 12c PDB和CDB全局用户权限问题

    Oracle12c版本中引入了新的CDB和PDB 默认登陆CDB后创建的用户为全局用户必须以c##开头 如果要访问CDB中的表,可以用GRANT命令赋权 但是上面的赋权并不会再PDB中生效 如果要这个 ...

  9. 浅谈Java字符串

    从概念上而言,Java字符串就是Unicode字符序列.由于Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String,每个用双引号的括起来的字符串都是String类的一个实 ...

  10. [转] java中volatile关键字的含义

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...