Jdom 解析 XML【转】

先创建一个 xml 文件,并把它放置到项目的根目录下:
prop.xml

1 <?xml version="1.0" encoding="UTF-8"?>
2 <prop>
3   <mess>
4     <property name="sSize" value="52"></property>
5     <property name="cSize" value="23"></property>
6     <property name="pSize" value="15"></property>
7     <property name="aSize" value="25"></property>
8   </mess>
9 </prop>
下面要实现的是通过不同的 name 属性值来获得其对应的 vaule 的属性值,这里是用 jdom 来解析XML数据,所以需要导入 jdom 所需的jar包,我这里用的是 jdom-2.0.0.jar
XmlDom.java
 1 package com.fancy.util;
 2 
 3 import java.util.List;
 4 import org.jdom.Document;
 5 import org.jdom.Element;
 6 import org.jdom.input.SAXBuilder;
 7 /**
 8  * -----------------------------------------
 9  * @文件: XmlDom.java
10  * @描述: JDOM 解析XML资源
11  * -----------------------------------------
12  */
13 public class XmlDom {
14     
15     /**
16      * @方法名: obtainValue 
17      * @参数名:@param name:属性名
18      * @参数名:@return           :返回与属性名一致的属性值
19      * @描述语: 解析XML数据,返回与属性名一致的属性值,查找不到匹配属性名则返回null
20      */
21     public static String obtainValue(String name){
22         try {
23             //创建一个SAXBuilder对象
24               SAXBuilder saxBuilder = new SAXBuilder();            
25             //读取prop.xml资源
26               Document doc = saxBuilder.build("prop.xml");
27             //获取根元素(prop)
28             Element root = doc.getRootElement();
29             //获取根元素下面的所有子元素(mess)
30             List<Element> messList = root.getChildren("mess");
31             //子根元素(mess)
32             Element childrenRoot = null;
33             //property元素集合
34               List<Element> propertyList = null;
35             //遍历根元素的子元素集合(即遍历mess元素)
36             for(int i = 0; i < messList.size(); i++){
37                  //将根元素prop下的mess子元素作为一个新的子根元素
38                    childrenRoot = messList.get(i);
39                 //获取子根元素mess下的所有property子元素
40                    propertyList = childrenRoot.getChildren("property");
41                 //遍历子根元素的子元素集合(即遍历property元素)
42                 for(int j = 0; j < propertyList.size(); j++){
43                     //获取property元素
44                        Element element = propertyList.get(j);
45                     //element.getAttributeValue("name"):获取property中name属性的值
46                        if(element.getAttributeValue("name").equals(name)){        //如果name的值一致
47                           return element.getAttributeValue("value");            //取得name对应的value属性值
48                        }
49                 }
50             }
51             //遍历完没有查找到结果返回null
52             return null;
53         } catch (Exception e) {e.printStackTrace();} 
54         return null;
55     }
56 }

最后来创建一个简单的测试类即可

 1 package test;
 2 
 3 import com.fancy.util.XmlDom;
 4 /**
 5  * -----------------------------------------
 6  * @文件: Test.java
 7  * @描述: 测试类
 8  * -----------------------------------------
 9  */
10 public class Test {
11 
12     public static void main(String[] args) {
13         System.out.println(XmlDom.obtainValue("pSize"));
14         System.out.println(XmlDom.obtainValue("PSize"));
15     }
16     
17 }

 

 

posted on 2012-07-29 08:40  Dream_c  阅读(309)  评论(0编辑  收藏  举报