美文网首页
XPath用法

XPath用法

作者: Silence_xl | 来源:发表于2022-08-03 16:40 被阅读0次
    通配符                 描述
    *                匹配任何节点。
    @*                    匹配任何属性
    node()                    匹配任何类型的节点
    

    XPath表达式实例:
    获取根节点下所有这个名字的节点—//节点名
    比如要获取Config里面所有名字叫Cars的节点,表达式就可以填@”//Cars” 栗子如下

    NSArray *datas = [rootElement nodesForXPath:@"//Cars" error:nil]; 
    

    获取节点下的子节点—节点/子节点
    举个栗子:获取Cars的节点里面的Car子节点

    表达式-------- @"//Cars/Car"
    

    获取节点里的属性—节点/@属性
    举个栗子:获取Cars的id属性

    表达式-------- @"//Cars/@id"
    

    如果不知道属性名或者节点名还可以直接用*代替属性名,获取节点所有的属性或者子节点

    表达式-------- @"//Cars/@*"获取Cars的所有属性
    表达式-------- @"//Cars/*"获取Cars的所有所有子节点
    

    多个节点路径的情况可以用’|’来分开,比如我只想要Cars里面的id和type属性,可以这么写

    表达式-------- @"//Cars/@id | Cars/@type"
    

    接下来就到高级一点的用法—-谓词
    谓词可以嵌套在方括号里对查询结果根据你设定的条件进一步筛选
    一个个介绍太麻烦了,直接上表达式实例吧

    @"//Config/Cars[last()]" 获取Config里的最后一个节点
    @"//Cars/Car[1]" 获取Cars里面的第一个Car节点
    @"//Cars/Car[last()-1]" 获取Cars里面的倒数第二个Car节点
    @"//Cars/Car[position()<3]" 获取Cars里面的前2个Car节点
    @"//Cars/Car[@id]" 获取Cars里面的有属性id的Car
    @"//Cars/Car[@id = 941]"  获取Cars里面属性id为941的Car节点
    @"//Cars[@type = 'cargroup']" 获取Config里面属性type为cargroup的节点
    @"//Cars/Car[txt = '水冷系统']" 获取Cars里面txt为水冷系统的Car节点
    @"//Cars/Car[@id > 30]" 获取Cars里面属性id大于30的Car节点
    @"//Cars/Car[@id > 30]/txt" 获取Cars里面属性大于30的Car节点里的txt子节点
    @"//Cars/Car[@id = 941]/ecu/@*" 获取Cars里面id=941的Car节点里面的ecu子节点的所有属性
    

    这就是我所知道的XPath的全部用法了,还有什么特别姿势请小伙伴们帮我解锁吧

    相关文章

      网友评论

          本文标题:XPath用法

          本文链接:https://www.haomeiwen.com/subject/sanywrtx.html