天天看點

JAVA-WEB dom4j解析XML檔案

XML一般都作為配置檔案使用,使用Java的IO技術就可以解析不過很麻煩。

可以使用第三方的開發包來處理XML檔案,下面來介紹一下。

常見的有三種方式:

1.    DOM:需要将整個XML加載到記憶體解析成一個Document對象,可以進行增删改查操作。

    缺點是如果XML檔案過大,可能會出現記憶體溢出的現象。

2.    SAX:是一種快速的方法,可以處理大檔案。

    缺點是隻能讀使用後将釋放資源。

3.    PULL:Android内置的XML解析方式。

常見的解析開發包:

JAXP、JDom、jsoup、dom4j(此篇文章使用這種比較常用的解析開發包,hibernate底層就采用此包)

代碼如下:

package demo.xml.dom4j;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jTest {
	
	
	
	public static void main(String[] args) {
		//獲得saxreader執行個體
		SAXReader reader = new SAXReader();
		
		try {
			//獲得xml文檔
			Document document = reader.read("src/demo/xml/dom4j/web.xml");
			//獲得根元素
			Element rootElement = document.getRootElement();
			//根元素名稱
			String nodeName = rootElement.getName();
			System.out.println(nodeName);
			//獲得根元素下所有元素的清單
			List<Element> elements = rootElement.elements();
			//周遊根元素下元素
			for (Element element : elements) {
				String childName = element.getName();
				System.out.println("NodeName:"+childName);
				if("servlet".equals(childName)) {
					Element servletName = element.element("servlet-name");
					System.out.println("servletName:"+servletName.getText());
					Element servletClass = element.element("servlet-class");
					System.out.println("servletName:"+servletClass.getText());
				}
			}
			System.out.println("-----------------------------");
			//獲得指定元素
			Element servletMapping = rootElement.element("servlet-mapping");
			System.out.println(servletMapping.getName());
			Element servletName = servletMapping.element("servlet-name");
			System.out.println("servletName:"+servletName.getText());
			Element urlPattern = servletMapping.element("url-pattern");
			System.out.println("urlPattern:"+urlPattern.getText());
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}
	
	
}