• XPath是一种XML文档的寻址语言


    什么是XPath ?
      

      -XPath是定义XML文档元素的语法规则集合
      
      
    -XPath使用路径定义XML元素
      
      
    -XPath定义标准函数库
      
      
    -XPath是XSLT主要元素
      
      
    -XPath不是XML格式
      
      
    -XPath是W3C制定的标准

    译者注:本文以XPath 1.0为基准。关于XPath 2.0另文介绍

    XPath类似传统的文件路径

      XPath使用路径表达式去确定XML文档的节点。这些路径与计算机系统使用的文件系统极为相似。
      例如:
      
      home/xml/index.html


    XPath 示例

    首先建立一个简单的XML文档,一个常见定单的部分内容

    <?xml version="1.0" encoding="GB2312"?>

    <order>
      
    <item>
        
    <itemNumber>C2688-67037</itemNumber>
        
    <description>LCD液晶显示器</description>
        
    <quantity>1</quantity>
        
    <price>358.00</price>
      
    </item>
        
    <item>
        
    <itemNumber>C2688-67061</itemNumber>
        
    <description>音箱</description>
        
    <quantity>1</quantity>
        
    <price>16.50</price>
      
    </item>
        
    <item>
        
    <itemNumber>C2688-67010</itemNumber>
        
    <description>鼠标</description>
        
    <quantity>1</quantity>
        
    <price>8.50</price>
      
    </item>
    </order>


    下面的XPath表达式选择ROOT元素order

    /order

    下面的XPath表达式选择元素order中的所有item元素

    /order/item

    下面的XPath表达式选择元素order下元素item中的所有price元素
    /order/item/price

    注释:用“/”路径开始代表元素的绝对路径


    XPath定义标准函数库

    下面的XPath表达式选择元素item中的所有price值大于12.60的元素
    /order/item[price>12.60]

    XPath用于XSLT

    XPath是XSLT标准的核心,没有XPath知识,不可能建立XSLT文挡

    XPath是为XSLT,XPointer及其他XML解析软件而设计。

    目前,W3C已推出功能更强大的XPath2.0版本

    --------------------------------------------------------------------------

    XPath 语法规则

    XPath使用路径表达式去确定XML文档中的节点。

    我们将利用下面的XML文档描述XPath语法

    <?xml version="1.0" encoding="GB2312"?>

    <order>
      
    <item catalog="parts">
        
    <itemNumber>C2688-67037</itemNumber>
        
    <description>LCD液晶显示器</description>
        
    <quantity>1</quantity>
        
    <price>358.00</price>
      
    </item>
        
    <item catalog="parts">
        
    <itemNumber>C2688-67061</itemNumber>
        
    <description>音箱</description>
        
    <quantity>1</quantity>
        
    <price>16.50</price>
      
    </item>
        
    <item catalog="parts">
        
    <itemNumber>C2688-67010</itemNumber>
        
    <description>鼠标</description>
        
    <quantity>1</quantity>
        
    <price>8.50</price>
      
    </item>
    </order>

    节点定位:

    XML文挡可以表示为树结构节点形式
    XPath使用模式表达式识别XML文档的节点。

    一个XPath的模式是使用反斜杠“/”分开子元素名称描述路径

    下面的XPath表达式选择元素order下元素item中的所有price元素
    /order/item/price

    注释:用“/”路径开始代表元素的绝对路径.

    不用“/”路径开始代表元素的相对路径

    item/price

    用“//”路径开始代表整个文档满足条件的所有元素

    下面的XPath表达式选择文档中所有的item元素
    //item

    选择未知元素

    通配符 “*”可用于选择未知XML元素

    下面的XPath表达式选择元素order中的所有item元素所属的子元素

    /order/item/*

    下面的XPath表达式选择元素order下所有孙子辈的price元素
    /order/*/price

    下面的XPath表达式选择所有具有两个祖先的price元素
    /*/*/price

    下面的XPath表达式选择文档所有元素
    //*

    选择分支

    使用方括号[]可以指定特定的元素

    下面的XPath表达式选择元素order中的第一个item的子元素

    /order/item[1]

    下面的XPath表达式选择元素order中的最后一个item的子元素
    /order/item[last()]

    下面的XPath表达式选择元素order中具有price元素的item元素
    /order/item[price]

    下面的XPath表达式,从元素order中选择具有price等于12.60元素的item元素
    /order/item[price=16.50]

    下面的XPath表达式,从隶属于元素order的item元素中选择具有price等于12.60元素的price元素
    /order/item[price=16.50]/price

    选择几个路径

    在XPath表达式中,使用 "|" 运算符可以选择几个路径 。实质上是逻辑“与”操作

    下面的XPath表达式,从隶属于order的item元素中选择所有itemNumber 和description 元素 
    /order/item/itemNumber | /order/item/description


    下面的XPath表达式,从文档中选择所有itemNumber 和description 元素 
    //itemNumber | //description

    下面的XPath表达式,从文档中选择所有itemNumber ,description和price 元素 
    //itemNumber | //description | //price

    下面的XPath表达式,选取属于order中item下所有itemNumber元素和从文档中选择所有description元素 
    /order/item/itemnumber | //description

    选择属性
    在XPath中,所有属性使用@前缀

    下面的XPath表达式,选取所有名为catalog的属性
    //@catalog


    下面的XPath表达式,选取所有具有catalog属性的item元素
    //item[@catalog]

    下面的XPath表达式,选取所有具有任何属性的item元素
    //item[@*]

    下面的XPath表达式,选取所有具有catalog等于"parts"属性的item元素
    //item[@catalog="parts"]



    一个例子
     
    XmlDom1.selectNodes("/root/tblMarketSaleTask_Main[@FMONEY>120.000 and @FMARKETID>63 and @FDEPTID>1000 ]")
  • 相关阅读:
    “国产化替代”加速!这些软件要硬刚国外巨头
    企业研发流程演进之路
    胜任力模型
    金字塔原理
    扒一扒数据中台的皇帝外衣(转)
    大数据平台构建实战
    浏览器的底层响应原理
    分库分表方案
    spring boot:用spring security加强druid的安全(druid 1.1.22 / spring boot 2.3.3)
    spring boot:用cookie保存i18n信息避免每次请求时传递参数(spring boot 2.3.3)
  • 原文地址:https://www.cnblogs.com/xiang/p/250063.html
Copyright © 2020-2023  润新知