dom4j解析XML文件

2018/06/20 问题一箩筐

简单用DOM4J结合XPATH解析XML 由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素

使用dom4j支持xpath的操作的几种主要形式

第一种形式
    /AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
第二种形式
    //BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
第三种形式
    /*: 所有元素
第四种形式
    BBB[1]: 表示第一个BBB元素
    BBB[last()]:表示最后一个BBB元素
第五种形式
    //BBB[@id]: 表示只要BBB元素上面有id属性,都得到
第六种形式
    //BBB[@id=’b1’] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1

使用dom4j支持xpath具体操作
默认的情况下,dom4j不支持xpath,如果想要在dom4j里面是有xpath,第一步需要,引入支持xpath的jar包,如下:

在dom4j里面提供了两个方法,用来支持xpath

selectNodes(“xpath表达式”),获取多个节点
selectSingleNode(“xpath表达式”),获取一个节点

应用简单案例:

1.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<class> 
  <student> 
    <name>张三</name>  
    <sid>111111</sid> 
  </student>  
  <student id="stu1"> 
    <name>李四</name>  
    <sid>222222</sid> 
  </student> 
</class>
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jXpath {

    public static void main(String[] args) throws Exception {
        select();//查询所有name的值
        //select2();//查询id=stu1的学生的name的值
    }
    //查询所有name的值
    private static void select() throws Exception {
        SAXReader saxReader=new SAXReader();
        Document document=saxReader.read("src/1.xml");
        List<Node>list=document.selectNodes("//name");
        for(int i=0;i<list.size();i++)
            System.out.println(list.get(i).getText());
    }
    //查询id=stu1的学生的name的值
    private static void select2() throws Exception {
        SAXReader saxReader=new SAXReader();
        Document document=saxReader.read("src/1.xml");
        Node node=document.selectSingleNode("//student[@id='stu1']/name");
        System.out.println(node.getText());
    }
}

Search

    欢迎关注我的微信公众号

    Yannis的程序人生

    Table of Contents