java--xml文件读取(JDOM&DOM4J)
1、JDOM解析
首先导入额外的jar包:
Build Path:jdom-2.0.6.jar
准备工做获取到子节点的集合:
package com.imooc_xml.jdom.text; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List; import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder; public class JDOMTest { public static void main(String[] args) { // 1、创建一个SAXBuilder对象
SAXBuilder saxBuilder = new SAXBuilder();
InputStream in ;
try {
// 2、创建一个输入流,将xml文件加载到输入流中
in = new FileInputStream("xml/books.xml");
// 3、通过saxBuilder的build方法,将输入流加载到saxBuilder中
Document document = saxBuilder.build(in);
// 4、通过document对象获取xml文件的根节点
Element rootElement = document.getRootElement();
// 5、获取根节点下的子节点的list集合
List<Element> bookList = rootElement.getChildren(); } catch (FileNotFoundException e) {
e.printStackTrace();
}catch (JDOMException | IOException e) {
e.printStackTrace();
}
}
}
获取节点的属性名和属性值,节点名和值:
for (Element book:bookList){
System.out.println("开始解析第"+(bookList.indexOf(book)+1)+"本书");
List<Attribute> attrList = book.getAttributes();
for (Attribute attr : attrList){
attr.getName();
attr.getValue();
}
//book.getAttributeValue("id");
List<Element> bookChildren = book.getChildren();
for(Element children : bookChildren){
children.getName();
children.getValue();
}
}
乱码的处理:
使用InputStreamReader()指定编码
在JDOM中存储Book对象
private static ArrayList<Book> bookList = new ArrayList<Book>(); //进行进一步解析
for (Element book:bookList){
Book bookEntity = new Book(); for (Attribute attr : attrList){
String attrName = attr.getName();
String attrValue = attr.getValue();
if(attrName.equals("id")){
bookEntity.setId(attrValue);
}
} for(Element children : bookChildren){
String name = children.getName();
String value = children.getValue();
if(name.equals("name")){
bookEntity.setName(value);
}else if(name.equals("author")){
bookEntity.setAuthor(value);
}else if(name.equals("year")){
bookEntity.setYear(value);
}else if(name.equals("price")){
bookEntity.setPrice(value);
}else if(name.equals("language")){
bookEntity.setLanguage(value);
}
}
JDOMTest.bookList.add(bookEntity);
bookEntity=null;
jar包随项目导入导出方法:
创建lib文件夹,复制jar包到此文件
build path添加jar包
2、DOM4J解析xml文件
导入jar包:
dom4j-1.6.1.jar
package com.imooc_xml.dom4j.test; import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class DOM4JTest { public static void main(String[] args) { SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File("xml/books.xml"));
Element bookstore = document.getRootElement();
Iterator it = bookstore.elementIterator();
while (it.hasNext()) {
Element book = (Element) it.next();
List<Attribute> bookAttrs = book.attributes();
for(Attribute attr : bookAttrs){
attr.getName();
attr.getValue();
}
Iterator itt = book.elementIterator();
while (itt.hasNext()) {
Element bookChild = (Element) itt.next();
bookChild.getName();
bookChild.getStringValue();
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
四种解析方式的分析:
DOM:
。与平台无关的官方解析方式
*需要的内存性能要高一点

SAX:
。java平台提供的一种基于事件驱动的解析方式
*解析图解

每走一部触发不同的方法

JDOM、DOM4J:
。在DOM、SAX方法上扩展的,只有Java中能够使用的解析方法
*
性能测试:
build path-->add Library-->JUnit
@Test
public void testPerformance() throws Exception{
long start = System.currentTimeMillis();
//测试方法的性能
long end = System.currentTimeMillis(); System.out.println(start-end);
java--xml文件读取(JDOM&DOM4J)的更多相关文章
- xml文件读取到数据库
xml文件读取到数据库 第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步 xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...
- php xml 文件读取 XMLReader
php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...
- javascript读取xml文件读取节点数据的例子
分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...
- java实现xml文件读取并保存到对象
首先浅聊一下解析xml的四种方式: 1.DOM方式:有缺点但是这个缺点却也是他的优点.下面详细介绍: 以树形的层次结构组织节点或信息片断集合,可以获得同一个文档中的多处不同数据.使用起来简单. 优点是 ...
- JAVA xml 流方式读取。数据挖掘大文件预处理。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- java操作XML文件--读取内容
先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类 由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...
- Java XML文件解析
四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 蓝色字体内容由上一篇博文中补充进来的,写作风格比较好,大家有兴趣可以去查看原文 众所周知,现在解析XML的方法越来越多,但主流的方法也就四 ...
- XML文件操作之dom4j
能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的 所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/ dom4 ...
- XML文件解析之DOM4J解析
1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...
随机推荐
- bootstrap input 加了 disabled 后台竟然接受不到值
下午做了一个input 值需要不可改变.在input属性中加入了 disabled .在后台接受 var_dump($_POST); 竟然看不到值. <input type="t ...
- 通俗的解释下音视频同步里pcr作用
PCR同步在非硬件精确时钟源的情况还是谨慎使用,gstreamer里面采用PCR同步,但是发现好多ffmpeg转的片儿,或者是CP方的片源,pcr打得很粗糙的,老是有跳帧等现象.音视频同步,有三种方法 ...
- saltstack之定时管理
1.设置定时任务 /srv/salt/cron/ntpdate.sls /usr/sbin/ntpdate 10.31.10.3; /sbin/hwclock -w: cron.present: - ...
- GoogleMap-------API KEY申请流程
前言:此文是关于Google Maps Android API v2 KEY的申请流程介绍. 1.首先访问https://code.google.com/apis/console/?pli=1#pro ...
- City Game(最大子矩阵)
Bob is a strategy game programming specialist. In his new city building game the gaming environment ...
- ConfigurableBeanFactory
ConfigurableBeanFactory :关系如下 在上面这样的一个关系图中可以先看下SingletonBeanRegistry的源代码: package org.springframewor ...
- Nginx结合GeoIP库
1. 编译nginx时带上geoip模块 # wget http://nginx.org/download/nginx-x.x.x.tar.gz # tar zxvf nginx-x.x.x.tar. ...
- android控件层次
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...
- FTP开启被动连接模式
在Linux环境下搭建ftp服务器,具体步骤见:http://www.cnblogs.com/zjiacun/p/6896803.html 配置被动连接的方法: 找到配置文件/etc/vsftpd/v ...
- java面向对象入门之方法参数的传递
/* Name : Power by :Stuart Date:2015.4.25 */ class PassOn{ //创建show方法,把i传入,输出i+1的结果 public void show ...