java结合XPATH解析XML

做自动化测试的人,都应该对XPATH很熟悉了,但是在用JAVA解析XML时,我们通常是一层层的遍历进去,这样的代码的局限性很大,也不方便,于是我们结合一下XPATH,来解决这个问题。

所需要的JAR包:

dom4j.jar

jaxen.jar

xmlbeans.jar

具体的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
public class ParseXml {
     
     private String filePath;
 
     private Document document; 
     
     public ParseXml(String filePath) {     
         this .filePath = filePath;
         this .load( this .filePath);
     }  
     
     private void load(String filePath){
         File file = new File(filePath);
         if (file.exists()) {
             SAXReader saxReader = new SAXReader();
             try {
                 document = saxReader.read(file);
             } catch (DocumentException e) {    
                 System.out.println( "文件加载异常:" + filePath);              
             }
         } else {
             System.out.println( "文件不存在 : " + filePath);
         }          
     }  
     
     public Element getElementObject(String elementPath) {
         return (Element) document.selectSingleNode(elementPath);
     }  
     
     @SuppressWarnings ( "unchecked" )
     public List<Element> getElementObjects(String elementPath) {
         return document.selectNodes(elementPath);
     }
     
     @SuppressWarnings ( "unchecked" )
     public Map<String, String> getChildrenInfoByElement(Element element){
         Map<String, String> map = new HashMap<String, String>();
         List<Element> children = element.elements();
         for (Element e : children) {
             map.put(e.getName(), e.getText());
         }
         return map;
     }
     
     public boolean isExist(String elementPath){
         boolean flag = false ;
         Element element = this .getElementObject(elementPath);
         if (element != null ) flag = true ;
         return flag;
     }
 
     public String getElementText(String elementPath) {
         Element element = this .getElementObject(elementPath);
         if (element != null ){
             return element.getText().trim();
         } else {
             return null ;
         }      
     }
     
     public static void main(String[] args) {
         
         ParseXml px = new ParseXml( "config/TestBaidu.xml" );
         List<Element> elements = px.getElementObjects( "/*/testUI" );
         
     }
     
}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值