zoukankan      html  css  js  c++  java
  • XML的xPath格式

    XML的xPath格式(C#)

        xPath是XML提供的一种格式,用来查询XML的节点。

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

        下面讲解的xPath语法都是根据上面的XML来的。

    "bookstore"

    从当前节点的子节点中选择名为bookstore的节点。

     

    "/bookstore"

    从根节点的子节点中选择名为bookstore的节点。

     

    "//bookstore"

    从XML的任意位置选择名为bookstore的节点。重点突出这个任意位置,它不受当前节点的影响,也就是说假如当前节点是在第 100 层(有点夸张),也可以选择第一层的名称为 bookstore的节点。

     

    "."

    选择当前节点

     

    ".."

    选择当前节点的父节点,也就是上一层的节点。

     

    "//title[@lang]"

    选择带有lang属性,并且名为title的节点

     

    "//title[@lang='eng']"

    选择带有lang属性,并且lang属性值为eng,名为title的节点

     

    "//book[price>30]"

    选择名为book的节点,选择的节点必须有一个名为price的子节点,并且子节点的值要满足>30的条件

     

    "//book[2]"

    选择名为book的第二个节点,注意序号是从1开始,不是0

     

    "//book[last()]"

    选择左后一个名为book的节点

     

    "//book[position()<=2]"

    选择前2个名为book的节点

     

    "//title//@lang"

    选择名为title的节点的属性值,注意这里得到是属性,而不是节点

     

    "//price[text()]"

    选择名为price的节点的内容

     

    "//title[@*]"

    选择名为title的节点的所有属性值

     

    "//bookstore/*/price"

    *表示任意名字

     

    "//title|//price"

    选择名为title或者名为price的节点

     

    "//book[contains(price, '99')]"

    选择名为book的节点,选中的节点含有名为price的子节点,并且子节点值含有99字符

     

    "//title[contains(@lang, 'en')]"

    选择名为title,选中的节点含有名为lang的属性,并且属性值含有dn字符

     

    "//title[@name='wu' and @lang='eng']"

    选择名为title的节点,选中的节点含有name和lang属性,并且属性值分别为wu和eng

     

    如果XML带有名字空间,例如:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <bookstore xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
    <book>
    
      <title name="wu" lang="eng">Harry Potter</title>
    
      <price>29.99</price>
    
    </book>
    
    <book>
    
      <title lang="eng">Learning XML</title>
    
      <price>39.95</price>
    
    </book>
    
    </bookstore>

    这种情况要使用xPath就必须带有名字空间,否则查询结构都为0。

    举个例子,假设我已将名字空间http://schemas.microsoft.com/developer/msbuild/2003声明为ns,要使用之前说明过的

    "//title[contains(@lang, 'en')]"

    就必须写成这样的形式

    "//ns:title[contains(@lang, 'en')]"

     

  • 相关阅读:
    洛谷 P4707 重返现世
    多项式总结&多项式板子
    线性常系数齐次递推
    洛谷 P2791 幼儿园篮球题
    CF Gym 102028G Shortest Paths on Random Forests
    洛谷 P4705 玩游戏
    [NOI2018]冒泡排序
    PKUSC2019 改题记录
    PKUSC2019 没约记
    Codeforces Round #557 题解【更完了】
  • 原文地址:https://www.cnblogs.com/wuhaowinner/p/xPath.html
Copyright © 2011-2022 走看看