`
wolfmaster
  • 浏览: 154694 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用dom4j的xpath解析xlm文件

阅读更多

 

package com.njusc.xmlTest;  
 
import java.io.File;  
import java.util.Iterator;  
import java.util.List;  
 
import org.dom4j.Attribute;  
import org.dom4j.Document;  
import org.dom4j.Element;  
import org.dom4j.Node;  
import org.dom4j.io.SAXReader;  
 
public class TestDom4jReadExmple  
{  
    /* 
     * 创建一个测试xml      bicashy.xml 
     *  
    <?xml version="1.0" encoding="UTF-8"?> 
    <students> 
        <student age="25"> 
            <name>云天河</name> 
            <college>野外学院</college> 
            <telephone>62354666</telephone> 
            <notes>一个从小在山野里长大的少年,双亲早亡,小小年纪就开始了自立的生活。</notes> 
        </student> 

        <student> 
            <name>韩菱纱</name> 
            <college leader="侠盗高飞">盗墓学院</college> 
            <telephone>62358888</telephone> 
            <notes>女,出身于盗墓世家,却对辨识墓穴位置、破解诡异机关、地脉风水之学颇有研究。</notes> 
        </student> 
        <student age="18"> 
            <name>柳梦璃</name> 
            <college leader="">名门贵族</college> 
            <telephone>66666666</telephone> 
            <notes>梦璃是一个满怀柔情的女孩子,但她最温柔的一面只会留给自己喜欢的人。</notes> 
        </student> 
        <student age="18"> 
            <name>慕容紫英</name> 
            <college>昆仑学院</college> 
            <telephone>88888888</telephone> 
            <notes>外冷内热、嫉恶如仇的热血青年,不但剑术超群,铸剑之术更是厉害。</notes> 
        </student> 
    </students> 
    */ 
 
      
    public static void main(String[] args) {  
        try{  
          //获取解析完后的解析信息  
          //利用XPath操作XML文件,获取想要的属性值  
 
            
          SAXReader saxReader = new SAXReader();  
          Document document = saxReader.read(new File("d:/bicashy.xml"));  
            
          /*直接定位到student name为云天河的节点的age属性*/ 
          List list = document.selectNodes("/students/student[name=\"云天河\"]/@age");  
          Iterator iter = list.iterator();  
          if (iter.hasNext()) {  
           Attribute attribute = (Attribute) iter.next();  
           System.out.println("云天河-"+attribute.getName()+":"+attribute.getValue());  
          }  
            
            
          /*获取学生姓名为"韩菱纱"所在的学院名称*/ 
          list = document.selectNodes("/students/student[name=\"韩菱纱\"]/college");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
            Element element = (Element) iter.next();  
            String name = element.getName();  
            String value = element.getText();  
            System.out.println("韩菱纱-"+name+":"+value);  
          }  
            
            
          /*获取学生姓名为"韩菱纱"所在学院的师傅*/ 
          list = document.selectNodes("/students/student[name=\"韩菱纱\"]/college/@leader");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
           Attribute attribute = (Attribute) iter.next();  
           System.out.println("韩菱纱-college-"+attribute.getName()+":"+attribute.getValue());  
          }  
            
          /*获取学生姓名为"柳梦璃"的简介*/ 
          list = document.selectNodes("/students/student[name=\"柳梦璃\"]/notes");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
              Element element = (Element) iter.next();  
              System.out.println("柳梦-"+element.getName()+":"+element.getText());  
          }  
            
          /*获取年龄为"18"的学生的姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age='18']");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__ "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取年龄为"18",college的leader为空的学院名称*/ 
          list = document.selectNodes("/students/student[@age='18']/college[@leader='']");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
              Element element = (Element) iter.next();  
              System.out.println(""+element.getName()+":"+element.getText());  
          }  
            
            
          /*获取年龄为"18"姓名为"柳梦璃"、姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age='18'][name='柳梦璃']");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__ "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取年龄大于18的人的 姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age>18]");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__   "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取student所有的人的 姓名、学院和电话号码  */ 
          //注  /students/student  可简写为//student根节点可以省去  
          list = document.selectNodes("//student");    
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__   "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
           
        }catch(Exception ex){  
          ex.printStackTrace();  
        }  
      }  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics