前言:近期接触SSH框架的时候,经常得配置一下xml文件;今天闲来没事就挖挖xml解析的原理供大伙儿分享。本文主要通过一个简单的例子解析一个xml文件。明白其中缘由之后,大家想定义自己的xml也绝非难事~
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。其解析步骤其实很简单,可以将一个xml文件类比一棵树。首先从根节点开始解析,之后遍历左右孩子结点,孩子结点再递归解析孩子结点。。。(注意,遍历的时候应该区别于深度优先遍历,准确的理解应该是层次遍历!)
·树级解析
![](https://images0.cnblogs.com/blog2015/771341/201507/141639397987560.png)
·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(); // 获取根元素HD 13 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解析工具包更好用,有机会得试试~不过其原理想必都差不多!