標籤:
前言:近期接觸SSH架構的時候,經常得配置一下xml檔案;今天閑來沒事就挖挖xml解析的原理供大伙兒分享。本文主要通過一個簡單的例子解析一個xml檔案。明白其中緣由之後,大家想定義自己的xml也絕非難事~
JDOM是一個開源項目,它基於樹型結構,利用純JAVA的技術對XML文檔實現解析、產生、序列化以及多種操作。其解析步驟其實很簡單,可以將一個xml檔案類比一棵樹。首先從根節點開始解析,之後遍曆左右孩子結點,孩子結點再遞迴解析孩子結點。。。(注意,遍曆的時候應該區別於深度優先遍曆,準確的理解應該是層次遍曆!)
·樹級解析
·Java代碼
2個檔案(test.xml和Sample1.java),另外請自己上網下載jdom.jar包。
Sample1.java
1 import java.util.*; 2 import org.jdom.*; 3 import org.jdom.input.SAXBuilder; 4 5 6 public class Sample1 { 7 public static void main(String[] args) throws Exception { 8 SAXBuilder sb = new SAXBuilder(); 9 10 Document doc = sb.build(Sample1.class.getClassLoader()11 .getResourceAsStream("test.xml")); // 構造文檔對象12 Element root = doc.getRootElement(); // 擷取根項目HD13 List list = root.getChildren("disk");// 取名字為disk的所有元素14 for (int i = 0; i < list.size(); i++) {15 Element element = (Element) list.get(i);16 17 String capacity=element.getChildText("capacity");//取disk子項目capacity的內容18 String directories=element.getChildText("directories");19 String files=element.getChildText("files"); 20 21 System.out.println("磁碟資訊:");22 System.out.println("分區容量:"+capacity);23 System.out.println("目錄數:"+directories);24 System.out.println("檔案數:"+files);25 System.out.println("-----------------------------------");}26 }27 }
test.xml
<?xml version="1.0" encoding="UTF-8"?><HD> <disk name="C"> <capacity>8G</capacity> <directories>200</directories> <files>1580</files> </disk> <disk name="D"> <capacity>10G</capacity> <directories>500</directories> <files>3000</files> </disk></HD>
·解析結果
磁碟資訊:分區容量:8G目錄數:200檔案數:1580-----------------------------------磁碟資訊:分區容量:10G目錄數:500檔案數:3000-----------------------------------
結語:據說dom4j解析工具包更好用,有機會得試試~不過其原理想必都差不多!
xml解析工具-jdom