zoukankan      html  css  js  c++  java
  • XPath路径表达式

    1、术语:

      节点(Node):7种类型:元素,属性,文本,命名空间,处理命令,注释,文档(根)节点

    ​2、节点关系:

      父(Parent),子(Children),同胞(Sibling),先辈(Ancestor),后代(Descendant)

    3、路径表达式

      nodename  节点名,选取此节点的所有子节点  例: childnode  当前节点中的childnode子节点,不包含孙子及以下的节点

      /     从根节点选取  例:/root/childnode/grandsonnode

      //     表示所有后代节点  例://childnode    所有名为childnode的后代节点

      .    表示当前节点  例:  ./childnode    表示当前节点的childnode节点

      ..     表示父节点  例:  ../nearnode     表示父亲节点的nearnode子节点

      @    选取属性  /root/childnode/@id     表示childnode的所有含有id属性的节点集

    4、谓语(Predicates)

      谓语可以对节点集进行一些限制,使选择更精确

      /root/book[1]    节点集中的第一个节点

      /root/book[last()]  节点集中最后一个节点

      /root/book[position() - 1]  节点集中倒数第二个节点集

      /root/book[position() < 5]  节点集中前五个节点集

      /root/book[@id]      节点集中含有属性id的节点集

      /root/book[@id='chinese']  节点集中id属性值为chinese的节点集

      /root/book[price > 35]/title  节点集中book的price元素值大于35的title节点集

    5、通配符:

      XPath路径中同样支持通配符(*,@*,node(), text())

      例:  /bookstore/*

      //title[@*]

    6、XPath轴

      定义相对于当前节点的节点集

      ancestor    所有祖先节点

      attribute    所有属性节点

      child      所有子元素

      descendant  所有后代节点(子,孙。。。)

      following    结束标记后的所有节点      preceding   开始标记前的所有节点

      following-sibling  结束标记后的所有同胞节点

      preceding-sibling  开始标记前的所有同胞节点

      namespace   当前命名空间的所有节点

      parent     父节点

      self       当前节点

      用法:轴名称::节点测试[谓语]

      例:  ancestor::book

      child::text()

    7、运算符

      |  两个节点集的合并  例:/root/book[1] | /root/book[3]

      +,-,*,dev,mod

      =,!=,<,>,<=,>=

      or,and  或和与

      多个属性条件查询      //div[@align='center' and @height='24']

      不存在class属性       //div[not(@class)]

    7、方法

    //选择不包含class属性的节点
    var result = node.SelectNodes(".//span[not(@class)]");
    //选择不包含class和id属性的节点
    var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
    //选择不包含class="expire"的span
    var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
    //选择包含class="expire"的span
    var result = node.SelectNodes(".//span[contains(@class,'expire')]");

  • 相关阅读:
    mysql导出存储过程、函数、视图、触发器
    通过mk-table-checksum与pt-table-sync检查不同库两张表的一致性。
    Linux内核OOM机制的详细分析
    Linux虚拟内存(VM)相关参数解析
    mysqld异常重启后,自动启动应用srm进程
    利用python多线程执行远程linux上命令
    oracle数据库时常用的操作命令
    Oralce_DDL
    Oralce_PL_SQL
    mysqlbackup备份和还原
  • 原文地址:https://www.cnblogs.com/ykbb/p/11943741.html
Copyright © 2011-2022 走看看