JDOM方法实现对XML文件的解析
首先要下载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文件的解析(注:文件中需要导入的Attribute、Document、Element、JDOMException都是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文件的解析的更多相关文章
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- linux下使用libxml2实现对xml文件的读取及查询
由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...
- 用DOM4J包实现对xml文件按属性分离。
转自本人博客:http://www.xgezhang.com/dom4j_xml_separata.html dom4j是一个Java的XML API.类似于jdom.用来读写XML文件的. dom4 ...
- asp.net 实现对xml文件的 读取,添加,删除,修改
用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...
- 使用jq的ajax实现对xml文件的读取
之前一直在用json来传递数据,但是xml也是不可缺少的,于是开始了xml的征程.xml的一些属性啊之类的在菜鸟教程上列举的已经很详细了,但是却没有前段部分的获取教程,查询资料,遂懂: index.x ...
- Android平台中实现对XML的三种解析方式
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
- 【文件处理】xml 文件 SAX解析
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口. 与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式. 当使用SAX分析器对XML文档 ...
- 【文件处理】xml 文件 DOM解析
一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...
- [置顶] Android开发之XML文件的解析
Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml vers ...
随机推荐
- nyoj 448 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- matlab color_rain colorbar
来自http://www.aos.wisc.edu/~dvimont/matlab/Graphics_Tools/color_rain.html Listing of script color_rai ...
- .编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package com.homework.zw; //类Print部分 public class Print1 { int x; void output() { if(x==1) { for(int ...
- 金蝶K3 破解版
- C#-窗体之间传递参数
主窗体: ].Value.ToString(); AddRoomTypeFrm AddRoomTypeFrm = new AddRoomTypeFrm(getroomtypeid); AddRoomT ...
- oracle查询前10条记录
select * from table_name where rownum<11;
- ProgressSeekBar
ProgressSeekBar.rar
- jQuery Masonry构建pinterest网站布局注意要点(转)
在愚人码头的博客上看到有关于如何构建pinterest网站的文章,其实就是“图片瀑布流显示”,我试着在本地做了一个,没有什么问题,但是放到公司的网站上就问题多多.一是定位不准确,二是图片显示不完整.但 ...
- 标准I/O库之缓冲
标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数.它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦. 标准I/O提供了三种类型的缓冲: (1) ...
- UNIX标准化及实现之功能测试宏
在头文件中定义了很多POSIX.1和XSI的符号.但是除了POSIX.1和XSI的定义之外,大多数实现在这些头文件中也加上了它们自己的定义.如果在编译一个程序时,希望它只使用POSIX定义而不使用任何 ...