zoukankan      html  css  js  c++  java
  • XPATH

     XPATH
    1. 路径表达式

    XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

    由于我们单纯使用dom定位节点时,大部分时间需要一层一层的处理,如果有了xPath,我们定位我们的节点将变得很轻松。他可以根据路径,属性,甚至是条件进行节点的检索。
    XPath 使用路径表达式在 XML 文档中进行导航
    XPath 包含一个标准函数库
    XPath 是 XSLT 中的主要元素
    XPath 是一个 W3C 标准

    路径表达式语法:
    斜杠(/)作为路径内部的分割符。
    同一个节点有绝对路径和相对路径两种写法:
    路径(absolute path)必须用"/"起首,后面紧跟根节点,比如/step/step/...。
    相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step, 也就是不使用"/"起首。
    "."表示当前节点。
    ".."表示当前节点的父节点
    nodename(节点名称):表示选择该节点的所有子节点
    "/":表示选择根节点
    "//":表示选择任意位置的某个节点
    "@": 表示选择某个属性
    我们以下面的xml来举例说明:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <bookstore>
      <book>
            <title lang="eng">Harry Potter</title>
               <price>29.99</price>
            </book>
      <book>
            <title lang="eng">Learning XML</title>
            <price>39.95</price>
            </book>
    </bookstore>


    2. 谓语

    所谓"谓语条件",就是对路径表达式的附加条件。所有的条件,都写在方括号"[]"中,表示对节点进行进一步的筛选。
    3. 通配符

    通配符的使用如下:
    "*"表示匹配任何元素节点。
    "@*"表示匹配任何属性值。
    node()表示匹配任何类型的节点。
    4. Dom4J对XPath的支持

    DOM4J支持使用XPATH来检索XML内容。若想使用需要引入一个jar包到项目中,该jar包名字应为: jaxen-xx-xx.jar。版本不同,可能名字略有差别。
    若不引用此包,程序会引发:
    java.lang.NoClassDefFoundError:org/jaxen/jaxenException异常。
    Document提供了一个对XPATH检索的方法:
    List selectNodes(Stirng xpath)
    传入xpath路径,获取相应的信息 .

        /**
         * 测试xpath
         */
        public static void testXPath(){
            try {
                SAXReader reader =new SAXReader();
                File file =new File("book.xml");
                Document doc =reader.read(file);
                /*
                 * List selectNodes()
                 * Dom4j的Document对XPath的支持方法
                 * 传入路径表达式,获取对应的节点信息
                 */
    //            List list =doc.selectNodes("/bookstore/book/price");
                List list =doc.selectNodes("//@lang");
                System.out.println("检索出了:"+list.size()+"项");
                for(Object o : list){
    //                Element element =(Element)o;
    //                System.out.println(element.getText());
                    Attribute attr = (Attribute)o;
                    System.out.println(attr.getValue());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            // List<Emp> list =getAllEmp("emp.xml");
            // for(Emp emp:list){
            // System.out.println(emp);
            // }
    //        List<Emp> list = new ArrayList<Emp>();
    //        list.add(new Emp(1, "张三", 22, "男", 5000));
    //        writeXmlToFile(list, "employee.xml");
            testXPath();
            
        }
    }
  • 相关阅读:
    June 26th 2017 Week 26th Monday
    June 25th 2017 Week 26th Sunday
    June 24th 2017 Week 25th Saturday
    June 23rd 2017 Week 25th Friday
    June 22nd 2017 Week 25th Thursday
    2018最佳网页设计:就是要你灵感爆棚!!!
    图片素材类Web原型制作分享-Pexels
    想要打动HR的心,UX设计师求职信究竟应该怎么写?
    【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实
    2018年最好的医疗网站设计及配色赏析
  • 原文地址:https://www.cnblogs.com/manue1/p/4514961.html
Copyright © 2011-2022 走看看