zoukankan      html  css  js  c++  java
  • xpath

    很久之前就接触xpath了,操作xml文件很好用。但是久而久之不用,记忆就渐渐模糊了。今儿又重新复习一下

    胡诌了一个人的xml文件包含头部 、身体什么鬼的

    <?xml version="1.0" encoding="utf-8" ?>
    
    <RenXinXi>
      <Ren>
        <Tou>
          <YanJing id="1" name="张三">棕色眼睛</YanJing>
          <ErDuo>招风大耳朵</ErDuo>
        </Tou>
        <ShenTi>
          <Fu>八块腹肌</Fu>
        </ShenTi>
      </Ren>
      <Ren>
        <Tou>
          <YanJing id="2" name="李四">红色眼睛</YanJing>
          <ErDuo>尖尖耳朵</ErDuo>
        </Tou>
        <ShenTi>
          <Fu>一块腹肌</Fu>
        </ShenTi>
      </Ren>
    
    </RenXinXi>


    1、首先查询了一下xpath的语法

    a.路径表达式

       
       
       
       
       
       
       
       
       
       
       
       

     nodeName :选取此节点的所有子节点

    /:从根节点选起

    //:选取匹配节点的所有子节点 ,而不考虑他们的位置 

     .:选取当前节点

    ..:选取当前节点的父节点

    @:选取属性

    b.包含谓语的表达式

    /RenXinXi/Ren[1]  选取RenXin的子节点下第一个Ren元素

    /RenXinXi/Ren[last()] 选最后一个Ren元素

    /RenXin/Ren[last()-1] 倒数第二个

    /RenXin/Ren[position()<3] 最前面二个元素

    //YanJing[@id] 选取属性为id的所有YangJing元素

    //YanJing[@id='1']  选取出id=1的所有YanJing元素

    /RenXinXi/Ren/ShenTi[ShouChang>15]  选取所有ShouChang大于15的ShenTi元素

    c.通配符的使用

    *:配合任何元素节点  //* 选取文档中所有元素

     @*:配合任何节点属性  //Ren[@*]

    d.多路径选择

    /RenXinXi/Ren/Tou/YanJing | ErDuo 选取所有YanJing和ErDuo

    e.轴的使用

    语法  轴名称::节点测试[谓语]
    child::book 选取所有属于当前节点的子元素的 book 节点。
    attribute::lang 选取当前节点的 lang 属性。
    child::* 选取当前节点的所有子元素。
    attribute::* 选取当前节点的所有属性。
    child::text() 选取当前节点的所有文本子节点。
    child::node() 选取当前节点的所有子节点。
    descendant::book 选取当前节点的所有 book 后代。
    ancestor::book 选择当前节点的所有 book 先辈。
    ancestor-or-self::book 选取当前节点的所有 book 先辈以及当前节点(如果此节点是 book 节点)
    child::*/child::price 选取当前节点的所有 price 孙节点。
  • 相关阅读:
    EffectiveC#17--装箱和拆箱的最小化
    EffectiveC#16--垃圾最小化
    EffectiveC#15--使用using和try/finally来做资源清理
    NET基础课--对象的筛选和排序(NET之美)
    Objective-C浅拷贝和深拷贝
    IOS viewdidload 方法在 init 方法之前调用
    [iOS]为什么不要在init初始化方法里调用self.view
    为什么init方法里有self.view就会先跑viewdidload方法
    IOS开发中重写init方法使用需谨慎
    The file “XXX.app” couldn’t be opened because you don’t have permission to view it.
  • 原文地址:https://www.cnblogs.com/yuanyanyan/p/6699154.html
Copyright © 2011-2022 走看看