`

java处理XML文件4种方式——JDOM处理XML

    博客分类:
  • java
阅读更多

package com.imooc.jdomtest;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import com.imooc.entity.Book;


public class JDOMTest {
 private static ArrayList<Book> booksList = new ArrayList<Book>();
 /**
  * @param args
  */
 public static void main(String[] args) {
  // 进行对books.xml文件的JDOM解析
  // 准备工作
  // 1.创建一个SAXBuilder的对象
  SAXBuilder saxBuilder = new SAXBuilder();
  InputStream in;
  try {
   // 2.创建一个输入流,将xml文件加载到输入流中
   in = new FileInputStream("src/res/books.xml");
   InputStreamReader isr = new InputStreamReader(in, "UTF-8");
   // 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中
   Document document = saxBuilder.build(isr);
   // 4.通过document对象获取xml文件的根节点
   Element rootElement = document.getRootElement();
   // 5.获取根节点下的子节点的List集合
   List<Element> bookList = rootElement.getChildren();
   // 继续进行解析
   for (Element book : bookList) {
    Book bookEntity = new Book();
    System.out.println("======开始解析第" + (bookList.indexOf(book) + 1)
      + "书======");
    // 解析book的属性集合
    List<Attribute> attrList = book.getAttributes();
    // //知道节点下属性名称时,获取节点值
    // book.getAttributeValue("id");
    // 遍历attrList(针对不清楚book节点下属性的名字及数量)
    for (Attribute attr : attrList) {
     // 获取属性名
     String attrName = attr.getName();
     // 获取属性值
     String attrValue = attr.getValue();
     System.out.println("属性名:" + attrName + "----属性值:"
       + attrValue);
     if (attrName.equals("id")) {
      bookEntity.setId(attrValue);
     }
    }
    // 对book节点的子节点的节点名以及节点值的遍历
    List<Element> bookChilds = book.getChildren();
    for (Element child : bookChilds) {
     System.out.println("节点名:" + child.getName() + "----节点值:"
       + child.getValue());
     if (child.getName().equals("name")) {
      bookEntity.setName(child.getValue());
     }
     else if (child.getName().equals("author")) {
      bookEntity.setAuthor(child.getValue());
     }
     else if (child.getName().equals("year")) {
      bookEntity.setYear(child.getValue());
     }
     else if (child.getName().equals("price")) {
      bookEntity.setPrice(child.getValue());
     }
     else if (child.getName().equals("language")) {
      bookEntity.setLanguage(child.getValue());
     }
    }
    System.out.println("======结束解析第" + (bookList.indexOf(book) + 1)
      + "书======");
    booksList.add(bookEntity);
    bookEntity = null;
    System.out.println(booksList.size());
    System.out.println(booksList.get(0).getId());
    System.out.println(booksList.get(0).getName());
    
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

分享到:
评论

相关推荐

    java语言——四种读取xml文件的方式,以及实现对excel文件的读取与保存(含相关的jar包)

    本资源分别用了四种方式:原生DOM、JDOM、SAX和DOM4J实现的对xml文件的读取,另外还有对excel文件读取与保存的例子,并且资源带有jdom.jar、poi-ooxml.jar和poi-3.7jar包

    Java Web 开发实战经典(基础篇)

    010304_XML解析 —— JDOM 010305_XML解析 —— DOM4J 010306_使用JavaScript操作DOM 010401_Tomcat服务器的安装及配置 020501_注释及Scriptlet 020502_page指令 020503_包含指令 020504_跳转指令 020505_实例操作:...

    java源码包4

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包3

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

    Java数据库编程宝典4

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典3

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    java web 视频、电子书、源码(李兴华老师出版)

    3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3...

    h_JAVA 2应用编程150例.rar

    第2章 Java的二维和三维图形处理 45 实例19 颜色处理 46 实例20 合成效果 47 实例21 多种字体效果 49 实例22 合成两个图片 53 实例23 实现多种线形 58 实例24 混合效果 62 实例25 纹理与色彩处理 63 实例26 实现填充...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3...

    李兴华Java Web开发实战经典(高清版) Part2

    3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3...

Global site tag (gtag.js) - Google Analytics