• 简单用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>

    Java代码

    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());
        }
    }
  • 相关阅读:
    查看linux系统的版本
    单机运行环境搭建之 --CentOS-6.5安装配置Tengine
    nginx启动、重启、关闭
    JAVASE02-Unit010: 多线程基础 、 TCP通信
    俄罗斯方块小游戏
    JAVASE02-Unit09: 多线程基础
    JAVASE02-Unit08: 文本数据IO操作 、 异常处理
    JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作
    JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile
    JAVASE02-Unit05: 集合操作 —— 查找表
  • 原文地址:https://www.cnblogs.com/fengmingyue/p/5966601.html
Copyright © 2020-2023  润新知