zoukankan      html  css  js  c++  java
  • dom4j解析XML文件

    简单用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());
    }
    }
  • 相关阅读:
    FGMap加载天地图地图数据
    FGMap学习之加载51地图
    SuperMap Desktop中配置Google Maps地图投影
    VS2003 试图运行项目时出错,无法启动调试。没有正确安装调试器。请运行安装程序安装或修复调试器
    C# Socket编程 同步以及异步通信(转)
    VBS 常用总汇 (http://blog.csdn.net/sgear/article/details/1380223)
    C#多线程学习 多线程的自动管理(线程池)(转)
    SQL 数据导出 到文件
    http隧道和xml (转)
    HTTP报文格式(转)
  • 原文地址:https://www.cnblogs.com/pigga/p/10098210.html
Copyright © 2011-2022 走看看