2015年06月13日 Java XML 浏览(92)

Java如何使用JDOM生成与解析XML文档

为减少DOM、SAX的编码量,出现了JDOM,极大减少了代码量。本文主要介绍Jdom是如何生成和解析XML文档。

一、下载Jar包依赖。
下载地址:http://central.maven.org/maven2/jdom/jdom/1.0/jdom-1.0.jar
Maven依赖如下:

<dependency>
	<groupId>jdom</groupId>
	<artifactId>jdom</artifactId>
	<version>1.0</version>
</dependency>

二、使用JDOM生成与解析XML的代码如下:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
 * @from www.everycoding.com
 * @Description:Java如何使用JDOM生成与解析XML文档
 */
public class XmlJdomTester {
	public static void main(String[] args) {
		String path = XmlJdomTester.class.getClassLoader().getResource("com/xml/student.xml").getPath();
		new XmlJdomTester().createXml(path);
		new XmlJdomTester().parserXml(path);
	}

	public void createXml(String fileName) {
		Document document;
		Element root;
		root = new Element("root");
		document = new Document(root);
		Element student = new Element("student");
		student.setAttribute("id", "1");
		student.setAttribute("group","1");
		root.addContent(student);
		Element name = new Element("name");
		name.setText("张三");
		student.addContent(name);
		Element sex = new Element("sex");
		sex.setText("男");
		student.addContent(sex);
		Element age = new Element("age");
		age.setText("18");
		student.addContent(age);
		Element birthday = new Element("birthday");
		birthday.setText("1990-09-09");
		student.addContent(birthday);
		
		Element student2 = new Element("student");
		student2.setAttribute("id", "2");
		student2.setAttribute("group","2");
		root.addContent(student2);
		Element name2 = new Element("name");
		name2.setText("李四");
		student2.addContent(name2);
		Element sex2 = new Element("sex");
		sex2.setText("女");
		student2.addContent(sex2);
		Element age2 = new Element("age");
		age2.setText("17");
		student2.addContent(age2);
		Element birthday2 = new Element("birthday");
		birthday2.setText("1990-10-10");
		student2.addContent(birthday2);
		XMLOutputter out = new XMLOutputter();
		try {
			out.output(document, new FileOutputStream(fileName));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void parserXml(String fileName) {
		SAXBuilder builder = new SAXBuilder(false);
		try {
			Document document = builder.build(fileName);
			Element rootElement = document.getRootElement();
			@SuppressWarnings("unchecked")
			ListstudentList = rootElement.getChildren("student");
			for (int i = 0; i < studentList.size(); i++) {
				Element student = studentList.get(i);
				@SuppressWarnings("unchecked")
				ListstudentInfoList = student.getChildren();
				for (int j = 0; j < studentInfoList.size(); j++) {
					Element sudentInfo = studentInfoList.get(j);
					System.out.println(sudentInfo.getName() + ":" + sudentInfo.getValue());
				}
			}
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

生成的XML文档格式如下:

<?xml version="1.0" encoding="UTF-8"?>  
<root>  
    <student id="1" group="1">  
        <name>张三</name>  
        <sex>男</sex>  
        <age>18</age>  
        <birthday>1990-09-09</birthday>   
    </student>  
    <student id="2" group="2">  
        <name>李四</name>  
        <sex>女</sex>  
        <age>17</age>  
        <birthday>1990-10-10</birthday>  
    </student>  
</root>

Jdom解析XML文档执行的结果如下:

name:张三
sex:男
age:18
birthday:1990-09-09
name:李四
sex:女
age:17
birthday:1990-10-10


用户头像