JDOM解析xml文档

原创 2018年04月15日 10:34:12

JDOM不是java官方支持的解析方法,所以我们要导入jar包 jar包下载

用JDOM来解析xml的步骤:

    1):创建SAXBuilder对象

    2):创建一个输入流,将xml文件加载到流中

    3):通过SAXBuilder对象的build方法,将输入流加载到SAXBuilder中

    4):通过Document对象来获取xml文件的根节点

    5):然后获取根节点下的子节点集合,开始进行遍历。

所有的代码加注释:

    xml文件:   

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
	<book id="1">
		<name>c</name>
		<year>2014</year>
		<price>89</price>
	</book>
	<book id="2">
		<name>数据结构</name>
		<year>2004</year>
		<price>89</price>
		<language>English</language>
	</book>
</bookstor

实体类:

    

package com.xml.enty;

public class Book {
	private String id;
	private String name;
	private String year;
	private String author;
	private String language;
	private String price;
	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 getYear() {
		return year;
	}
	public void setYear(String year) {
		this.year = year;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getLanguage() {
		return language;
	}
	public void setLanguage(String language) {
		this.language = language;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	
}

测试类:

package com.xml;

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.xml.enty.Book;

public class JDOMTest {
	public static void main(String[] args) {
		ArrayList<Book> booklist=new ArrayList<Book>();
		//1.创建一个SAXBuilder的对象
		SAXBuilder saxbuilder=new SAXBuilder();
		try {
			//2.创建一个输入流,将xml文件加载到流中
			InputStreamReader isr=new InputStreamReader(new FileInputStream("books.xml"),"UTF-8");
			//3.通过saxbuilder的build方法,将输入流加载到SAXBuilder中
			Document document=(Document)saxbuilder.build(isr);
			//通过Document对象获取对象xml文件的根节点
			Element rootElement=document.getRootElement();
			//获取根节点下的子结点的List集合
			List<Element> bookList=rootElement.getChildren();
			for(Element element:bookList){
				Book book=new Book();
				System.out.println("---开始解析第"+(bookList.indexOf(element)+1)+"本书");
				//解析节点的属性
				List<Attribute> attributes=element.getAttributes();
				//遍历节点中的属性
				for(Attribute att:attributes){
					book.setId(att.getValue());
					System.out.print("第"+(attributes.indexOf(att)+1)+"的属性名为:"+att.getName());
					System.out.println("-->属性值为:"+att.getValue());
				}
				//遍历节点中的子结点
				List<Element> NodeList=element.getChildren();
				for(Element node:NodeList){
					System.out.print("节点名为:"+node.getName());
					System.out.println("-->节点值为:"+node.getValue());
					if(node.getName().equals("name")){
						book.setName(node.getValue());
					}
					else if(node.getName().equals("author")){
						book.setAuthor(node.getValue());
					}
					else if(node.getName().equals("year")){
						book.setYear(node.getValue());
					}
					else if(node.getName().equals("price")){
						book.setPrice(node.getValue());
					}
					else if(node.getName().equals("language")){
						book.setLanguage(node.getValue());
					}
				}
				booklist.add(book);
				book=null;
				System.out.println("=====结束解析第"+(bookList.indexOf(element)+1)+"本书=====");
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		for(Book books:booklist){
			System.out.println(books.getId());
			System.out.println(books.getName());
			System.out.println(books.getYear());
			System.out.println(books.getPrice());
			System.out.println(books.getLanguage());
			System.out.println(books.getAuthor());
			System.out.println("---finish---");
		}
	}
}


jdom生成与解析xml详解

最近关注JDom,转载一下觉得不错的文章,方便以后阅读,在此感谢网路上朋友们共享的好文档! ----------------以下内容为转载---------------------- ...
  • a519781181
  • a519781181
  • 2016-07-29 14:13:05
  • 953

jdom解析xml文件简单实例

Java解析XML的四种方法—DOM/SAX/jdom/dom4j 为什么要用JDOM?  JDOM是网上流行开源的XML的操作类,用起来简单方便.与他对应的还有几个非常流行的框架,dom4j也是...
  • abc19900828
  • abc19900828
  • 2014-09-22 17:05:52
  • 3336

JDom解析和生成XML文档

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317...
  • ch656409110
  • ch656409110
  • 2013-09-28 18:58:21
  • 7785

java解析与生成xml(三): JDOM

JDom是一套非常优秀的Java开源api,主要用于读写xml文档,具有性能优异、功能强大、和非常方便使用的特点,并且把jdk自带的解析方式SAX和Dom的功能有效地结合起来...
  • NowUSeeMe
  • NowUSeeMe
  • 2017-01-28 01:13:51
  • 525

【java】jdom解析xml文件

java中有四种分别解析xml文件。分别是,DOM,SAX,DOM4J,JDOM四种。我第一篇就介绍用Jdom解析XML。本人觉得这四种学习其中一种即可。其余三中解析思想差不了多少。况且这四种介绍优缺...
  • zlxdream815
  • zlxdream815
  • 2012-12-05 16:13:01
  • 5908

使用Jdom解析XML

关于使用jdom解析xml
  • u011526599
  • u011526599
  • 2016-10-23 17:27:31
  • 2500

javaweb 解析xml

  • 2012年11月27日 10:53
  • 880KB
  • 下载

4种解析xml文件 实例

  • 2012年06月28日 16:20
  • 21KB
  • 下载

JDOM合并XML文件

项目中有很多xml文件需要合并成一个xml文件,利用JDOM进行合并,代码如下:File dir = new File(wdir);  File[] sDoc = dir.listFiles();  ...
  • yhw0510
  • yhw0510
  • 2007-08-09 09:54:00
  • 540

Jdom操作、创建和解析XML

需要导入Jdom的一个jar包; 1、Jdom创建XML package com.shengsiyuan.jdom; import java.io.FileWriter; import org...
  • HarderXin
  • HarderXin
  • 2012-02-23 09:29:57
  • 3922
收藏助手
不良信息举报
您举报文章:JDOM解析xml文档
举报原因:
原因补充:

(最多只允许输入30个字)