首先要下载JDOM.jar包,下载地址:http://download.csdn.net/detail/ww6055/8880371

下载到JDOM.jar包之后导入到工程中去。

实例程序:

books.xml文件:(注:books.xml文件在src/res文件夹下)

Book.java实体类:

public class Book {
    private String id;
    private String name;
    private String price;
    private String author;
    private String year;
    private String language;
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
}

SAXTest.java类实现对books.xml文件的解析(注:文件中需要导入的AttributeDocumentElementJDOMException都是JDOM包下的):

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 java.util.Vector;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.xml.Jdom.model.Book;

public class JdomTest {

 //对books.xml文件进行JDOM解析
    public static void main(String[] args) {
        List<Book> booklist = new ArrayList<Book>();
        //STEP1.创建一个SAXBuilder对象
        SAXBuilder sBuilder = new SAXBuilder();
        InputStream in;
        try {
            //STEP2.创建一个输入流,将xml文件加载到输入流中
            in= new FileInputStream("src/res/books.xml");
            //进一步包装成InputStreamReader对象,处理乱码现象
            InputStreamReader isr = new InputStreamReader(in,"utf-8");
            //STEP3.通过SAXBuilder对象的build方法,将输入流加载到saxBuilder中
            Document doc=sBuilder.build(isr);
            //STEP4.通过Document对象可以获取bookstore的根节点
            Element ele = doc.getRootElement();
            //STEP5.获取根节点下的子节点的集合
            List<Element> bookList = ele.getChildren();
            //继续解析
            for(Element book:bookList){
                System.out.println("============开始解析第"+(bookList.indexOf(book)+1)+"本书===============");
                Book b = new Book();
                //如果一直输姓名则可以直接获取属性值:System.out.println(book.getAttributeValue("id"));
                //book下所有的属性
                List<Attribute> attrList=book.getAttributes();
                for(Attribute attr:attrList){
                    System.out.println("属性名是:"+attr.getName()+" ***** 属性值是:"+attr.getValue());
                    if(attr.getName().equals("id"))
                        b.setId(attr.getValue());
                }
                List<Element> list = book.getChildren();
                for(Element element:list){
                    System.out.println("节点名:"+element.getName()+" *******  节点值:"+element.getValue());
                    if(element.getName().equals("name"))
                        b.setName(element.getValue());
                    if(element.getName().equals("author"))
                        b.setAuthor(element.getValue());
                    if(element.getName().equals("year"))
                        b.setYear(element.getValue());
                    if(element.getName().equals("price"))
                        b.setPrice(element.getValue());
                    if(element.getName().equals("language"))
                        b.setLanguage(element.getValue());
                }
                booklist.add(b);
                b=null;//把Book对象设置为空,防止出现属性设置现象
            //    System.out.println(book.getAttributes());
            //    System.out.println("节点值是:"+book.getValue());
                System.out.println("============结束解析第"+(bookList.indexOf(book)+1)+"本书===============");
                
            }
            System.out.println(booklist.get(0).getName()+"****"+booklist.get(1).getName());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

JDOM方法实现对XML文件的解析的更多相关文章

  1. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  2. linux下使用libxml2实现对xml文件的读取及查询

    由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...

  3. 用DOM4J包实现对xml文件按属性分离。

    转自本人博客:http://www.xgezhang.com/dom4j_xml_separata.html dom4j是一个Java的XML API.类似于jdom.用来读写XML文件的. dom4 ...

  4. asp.net 实现对xml文件的 读取,添加,删除,修改

    用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...

  5. 使用jq的ajax实现对xml文件的读取

    之前一直在用json来传递数据,但是xml也是不可缺少的,于是开始了xml的征程.xml的一些属性啊之类的在菜鸟教程上列举的已经很详细了,但是却没有前段部分的获取教程,查询资料,遂懂: index.x ...

  6. Android平台中实现对XML的三种解析方式

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  7. 【文件处理】xml 文件 SAX解析

    SAX的全称是Simple APIs for XML,也即XML简单应用程序接口. 与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式. 当使用SAX分析器对XML文档 ...

  8. 【文件处理】xml 文件 DOM解析

    一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...

  9. [置顶] Android开发之XML文件的解析

    Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml vers ...

随机推荐

  1. BootStrap最常用的几个插件(V3.3.0版)

    1.标签页 <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> < ...

  2. C#利用API制作类似QQ一样的右下角弹出窗体

    C#利用API制作类似QQ一样的右下角弹出窗体 (2009-03-21 15:02:49) 转载▼ 标签: 杂谈 分类: .NET using System;using System.Collecti ...

  3. HTML5要点_CSS(三)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. HBase 使用场景和成功案例

    有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多.因为HBase有许多公开的产品部署,我们正好可以这么做.本章节将详细介绍一些人们 ...

  5. Dev XtraTreeList 学习

    本文转载:http://www.cnblogs.com/VincentLuo/archive/2012/01/06/2313983.html 一.设置载请保留地址http://www.cnblogs. ...

  6. php join函数使用,很是方便

    以前数组转换成用逗号隔开的字符串都是自己写一个数组,最后还要去除多余的一个逗号,好麻烦. 无意中发现join函数,原来一句话就可以了. $_array = array('a','b','c','d', ...

  7. IOS 图片阴影,圆角等处理

    一直以来,为IOS添加图片的特殊效果都是通过跟美工的配合,比如,要加阴影,就从美工那边获得一张阴影效果图,在界面上画两个UIImageView,将阴影放在下面,图像放上上面,错开一定角度.有比如想做圆 ...

  8. javax.naming.NameNotFoundException:Name[ XXX] is not bound in this context.

    在用局部数据源去连数据库的时候,在本地的项目中,都是可以的,可是一部署到服务器上,就报错了. 报的错误是:javax.naming.NameNotFoundException:Name[ XXX] i ...

  9. Graph(2014辽宁ACM省赛)

    问题 F: Graph 时间限制: 1 Sec  内存限制: 128 MB 提交: 30  解决: 5 [cid=1073&pid=5&langmask=0" style=& ...

  10. [Javascript] Introduce to Webpack

    To use webpack, first you need to run: npm install webpack 2. Create a webpack.config.js file: modul ...