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. 01 linux上安装 nginx

    一:linux上安装 nginx 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz 解压:tar zxvf nginx-1.6.2.t ...

  2. selenium 遇到chrome 弹出是否保存密码框

    --待验证(以下是java脚本) ChromeOptions options = new ChromeOptions(); options.addArguments("--start-max ...

  3. nginx(Window下安装 & 配置文件参数说明 & 实例)

    一.为什么需要对Tomcat服务器做负载均衡:  Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站 ...

  4. 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

      目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...

  5. We7的区县站点群建设策略

    一.解决门户和委办局.乡镇的互动 构建以区县政府门户为主站,各委办局.乡镇为子站的站点群体系: 基于统一的信息体系,实现分级授权.统一管理的功能.各网站能够有独立的页面展现和管理后台,同一时候网站之间 ...

  6. SDOI2012 Round1 day2 集合(set)解题报告

    //=====================以上为官方题解==============// 数据略水,暴力枚举50. 把边按照升序排一遍,在询问,水过. #include<cstdio> ...

  7. php建立一个空类: stdClass

    $pick = new stdClass; $pick->type = 'full'; ;

  8. python(pytest)+allure+jenkins 实现接口自动化的思路

    效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...

  9. Java基础 - 常量与变量

    A:常量 内存中的一小块区域,在程序执行过程中,其值不可以发生改变的量称为常量 常量的几种表现形式: a:字符串常量 "HelloWorld" b:整数常量 12 c:小数常量 1 ...

  10. python三大器

    装饰器 装饰器的作用: 装饰器的本质:一个闭包函数 (高阶函数+嵌套函数) 装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展 闭包原理 装饰器执行流程 带多个参数函数 import ...