zoukankan      html  css  js  c++  java
  • XML和Xpath定位小结

    1.1 XML简介
    典型的XML文档是由XML文档首部和XML文档主体构成的。
    XML文档首部:声明包含<? ?>标签之中。例如:
    <?xml version="1.0" encoding="UTF-8" ?>
    XML文档主体,文档中的数据是通过树形结构进行组织的,一个标签引出一个元素节点,元素开始标签中可以指定属性节点,也可以包含子元素和文本内容,也可以什么也没有而成为一个空元素。
    1、一个格式正确的XML文档必须由一个且仅由一个顶节元素组成。将没有根元素的XML文档称为XML片段。
    2、正确处理特殊字符。使用CDATA段:
    <?xml versoin="1.0" encoding="UTF-8" ?>
    <root>
        <compare><![CDATA[ %$#<> ]]></compare>
    </root>


    1.2 Xpath语言
    Xpath将xml的文档结构视为一个树形结构,元素、属性、文本、注释以及处理指令都是这个树形结构上的节点,对于xml文档中元素、属性、文本、注释以及处理指令的访问实际上是按顺序遍历这棵树,使用Xpath的路径表示法,可以定位到XML文档中的一个节点或者节点集合。
    在Xpath中,可以使用相关标识来定位元素以及其属性,这些标识符关键字主要有:child、self、parent、descendant、attribute等。
    child为默认标识符,self表示当前节点,parent表示上一级节点。
    descendant表示当前子孙节点,attribute表示当前节点的属性。
    绝对路径的Xpath表示
    绝对路径是从根节点到目标节点所经历的路径。
    1、元素节点的访问:
    /child::Config/child::Department
    可以简化:
    /Config/Department
    2、属性节点的访问
    /child::Config/child::Department/attribute::id
    可以简化:
    /Config/Department/@id
    3、文本节点访问
    可以直接使用“//”来表示,例如“.//”表示当前路径下的文本内容。
    4、子孙节点的访问
    可以通过元素节点,但是离根元素太长,可以使用子孙节点表示:
    /child::class/descendant::Name
    可以简化:
    /class//Name
    5、任意节点的访问
    /child::Config/child::Department/child::*
    可以简写:
    /Config/Department/*
    相对路径的Xpath表示:
    parent::Director/@id 简写 ../@id
    self::Director/Name 简写 ./Name

    1.3 Xpath的元素定位条件
    在xml中,也可以根据筛选条件返回指定节点集
    1、根据属性值筛选节点集
    可以使用下面的表示来定位class元素下所有的Director子元素:
    /class/Director
    但是需要定位具有属性id的Director时:
    /class/Director[@id]
    当需要具体确定属性数值时:
    /class/Director[@id='1001']
    2、根据或表达式筛选节点集
    当需要对多个具有不同名称节点进行处理,可以使用|表达式,例如需要定位Director下的Name或者Age,二者任意一个度可以:
    /class/Director/Name|Age

  • 相关阅读:
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 获取指定进程的输入命令行
    dotnet 获取指定进程的输入命令行
    PHP sqrt() 函数
    PHP sinh() 函数
    PHP sin() 函数
    PHP round() 函数
  • 原文地址:https://www.cnblogs.com/lmfeng/p/2913890.html
Copyright © 2011-2022 走看看