1. 程式人生 > 程式設計 >基於JDOM生成解析XML過程解析

基於JDOM生成解析XML過程解析

JDOM是一個開源專案,它基於樹型結構,利用純JAVA的技術對XML文件實現解析、生成、序列化以及多種操作。

JDOM 直接為JAVA程式設計服務。它利用更為強有力的JAVA語言的諸多特性(方法過載、集合概念以及對映),把SAX和DOM的功能有效地結合起來。

Jdom是用Java語言讀、寫、操作XML的新API函式。Jason Hunter 和 Brett McLaughlin公開發布了它的1.0版本。在直覺、簡單和高效的前提下,這些API函式被最大限度的優化。在接下來的篇幅裡將介紹怎麼用Jdom去讀寫一個已經存在的XML文件。

到官方網站下載JDOM包http://www.jdom.org/

注意的是,版本1和版本2的類路徑已經變更,如果你是更新使用版本2,則需要重新編譯你的程式碼

package com.test;

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

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

/**
 * @說明 JDom生成解析XML
 * @author cuisuqiang
 * @version 1.0
 * @since
 */
@SuppressWarnings("unchecked")
public class JDomDemo {
	public static void main(String[] args) {
		String file = "C:\\p.xml"; // 檔案存放位置
		JDomDemo dj = new JDomDemo();
		dj.createXml(file);
		dj.parserXml(file);
	}
	/** 
   * 生成XML 
   * @param filePath 檔案路徑 
   */
	public void createXml(String fileName) {
		Element root = new Element("persons");
		Document document = new Document(root);
		Element person = new Element("person");
		root.addContent(person);
		Element name = new Element("name");
		name.setText("java小強");
		person.addContent(name);
		Element sex = new Element("sex");
		sex.setText("man");
		person.addContent(sex);
		Element age = new Element("age");
		age.setText("23");
		person.addContent(age);
		XMLOutputter XMLOut = new XMLOutputter();
		try {
			Format f = Format.getPrettyFormat();
			f.setEncoding("UTF-8");//default=UTF-8
			XMLOut.setFormat(f);
			XMLOut.output(document,new FileOutputStream(fileName));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	 /** 
   * 解析XML 
   * @param filePath 檔案路徑 
   */ 
	public void parserXml(String fileName) {
		try {
			SAXBuilder builder = new SAXBuilder();
			Document document = builder.build(fileName);
			Element root = document.getRootElement();
			List persons = root.getChildren("person");
			for (int i = 0; i < persons.size(); i++) {
				Element person = (Element) persons.get(i);
				List pros = person.getChildren();
				for (int j = 0; j < pros.size(); j++) {
					Element element = (Element) pros.get(j);
					System.out.println(element.getName() + ":" + element.getValue());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。