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

  1. xml文件读取到数据库

    xml文件读取到数据库   第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步  xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...

  2. php xml 文件读取 XMLReader

    php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...

  3. javascript读取xml文件读取节点数据的例子

    分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...

  4. java实现xml文件读取并保存到对象

    首先浅聊一下解析xml的四种方式: 1.DOM方式:有缺点但是这个缺点却也是他的优点.下面详细介绍: 以树形的层次结构组织节点或信息片断集合,可以获得同一个文档中的多处不同数据.使用起来简单. 优点是 ...

  5. JAVA xml 流方式读取。数据挖掘大文件预处理。

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  6. java操作XML文件--读取内容

          先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类       由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...

  7. Java XML文件解析

    四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 蓝色字体内容由上一篇博文中补充进来的,写作风格比较好,大家有兴趣可以去查看原文 众所周知,现在解析XML的方法越来越多,但主流的方法也就四 ...

  8. XML文件操作之dom4j

    能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的 所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/ dom4 ...

  9. XML文件解析之DOM4J解析

    1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...

随机推荐

  1. 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)

    功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人 ...

  2. 文本信息检索——布尔模型和TF-IDF模型

    文本信息检索--布尔模型和TF-IDF模型 1. 布尔模型 ​ 如要检索"布尔检索"或"概率检索"但不包括"向量检索"方面的文档,其相应的查 ...

  3. XtraBackup备份mysql5.1.73

    一.基础介绍 mysql5.1在源码中配备了两个版本的innodb存储引擎源码:innobase和innodb_plugin,编译安装的时候可以通过参数--with-plugins=innobase, ...

  4. ios错误ignoring file xxx missing required architecture x86_64 in file

    错误ignoring file xxx missing required architecture x86_64 in file 解决方法: 1.在Project target里“Architectu ...

  5. 笔试真题解析 ALBB-2015 算法project师实习生机试

    1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N.下3进制结果末尾有多少个0,事实上就是计算3进制中的3被进位多少次,仅仅要 ...

  6. TP框架的增删改

    TP添加数据有三种方式 1. //1.使用数组添加 $n = M("nation"); $arr = array("Code"=>"n007&q ...

  7. 爬虫入门【5】PyQuery简介

    PyQuery 目前最新的版本是1.3,基于最新版本进行介绍. 主要根据PyQuery的官方文档进行了更新. from pyquery import PyQuery as pq from lxml i ...

  8. 合唱队形(LIS)

    合唱队形    OpenJ_Bailian - 2711 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同 ...

  9. Hibernate Criteria 查询使用

    转载 http://blog.csdn.net/woshisap/article/details/6747466 Hibernate 设计了 CriteriaSpecification 作为 Crit ...

  10. 使用tomcat7-maven-plugin部署Web项目

      一.环境准备 我使用的环境是:Window 10.Tomcat 8.0.36.maven3.tomcat7-maven-plugin 2.2版本. 二.设置环境变量 安装Tomcat8.0.36和 ...