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. 洛谷P1447 - [NOI2010]能量采集

    Portal Description 给出\(n,m(n,m\leq10^5),\)计算\[ \sum_{i=1}^n \sum_{j=1}^m (2gcd(i,j)-1)\] Solution 简单 ...

  2. 【bzoj2393】Cirno的完美算数教室 数论容斥

    Description ~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~ 现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~ 但是Cirno这么天才的妖精才不屑去数 ...

  3. 济南学习 Day 5 T2 pm

    逆欧拉函数(arc)题目描述:已知phi(N),求N.输入说明:两个正整数,分别表示phi(N)和K.输出说明:按升序输出满足条件的最小的K个N.样例输入:8 4杨丽输出:15 16 20 24数据范 ...

  4. android图片上传

    package com.example.center; import java.io.ByteArrayOutputStream;import java.io.InputStream; import ...

  5. flowable资料

    flowable-modeler画流程图:https://www.youtube.com/watch?v=0pqD50pySJg 这个视频跳过创建用户那一步了:https://www.youtube. ...

  6. luogu P1351 联合权值

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  7. GeoServer发布Heatmap

    转自原文 GeoServer发布Heatmap 百度等热力图是使用开源的heatmap.js做的,但是这种解决方案的缺陷是: 1 数据量大的话,从前端通过后台查询比较费时,比如arcserver默认设 ...

  8. 如何稳定地使用 Google 搜索https://encrypted.google.com/

    方法很简单.用记事本打开 hosts 文件(Windows Vista 和 Windows 7 用户请先使用管理员权限打开记事本,然后将 hosts 文件拖进记事本中),在最下面添加如下内容: 203 ...

  9. js -- 侧边悬浮栏特效

    github: https://github.com/mybee/float-scroll-page #menu{width: 120px;height: auto; position: fixed; ...

  10. mysql统计功能和数据库information_schema/performance_schema

    1.去重统计数据表行数: select count(distinct col_name) from table_name; 2.统计行数 select count(*) from table_name ...