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

  • 相关阅读:
    2017ICPC沈阳赛现场赛 L-Tree (dfs)
    2019西北工业大学程序设计创新实践基地春季选拔赛 D(卢卡斯定理)
    Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)
    模板
    洛谷
    模板
    洛谷
    洛谷
    模板
    模板
  • 原文地址:https://www.cnblogs.com/lmfeng/p/2913890.html
Copyright © 2011-2022 走看看