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();
}
}
}