c#中的XML操作中,查询节点少不了要用到XPath的,selectNodes  和selectSingleNode方法。在别的地方抄来的这个XPath的基础知识,很有用的。

XPath 是XML的查询语言,和SQL的角色很类似。以下面XML为例,介绍XPath 的语法。

<?xml version="1.0" encoding="ISO-8859-1"?>

<catalog>

<cd country="USA">

<title>Empire Burlesque</title>

<artist>Bob Dylan</artist>

<price>10.90</price>

</cd>

<cd country="UK">

<title>Hide your heart</title>

<artist>Bonnie Tyler</artist>

<price>9.90</price>

</cd>

<cd country="USA">

<title>Greatest Hits</title>

<artist>Dolly Parton</artist>

<price>9.90</price>

</cd>

</catalog>

定位节点
XML是树状结构,类似档案系统内数据夹的结构,XPath也类似档案系统的路径命名方式。不过XPath 是一种模式(Pattern),可以选出 XML档案中,路径符合某个模式的所有节点出来。例如要选catalog底下的cd中所有price元素可以用:

/catalog/cd/price

如果XPath的开头是一个斜线(/)代表这是绝对路径。如果开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来,即使是处于树中不同的层级也会被选出来。以下的语法会选出文件中所有叫做cd的元素(在树中的任何层级都会被选出来):

//cd

选择未知的元素
使用星号(Wildcards,*)可以选择未知的元素。下面这个语法会选出/catalog/cd 的所有子元素:

/catalog/cd/*

以下的语法会选出所有catalog的子元素中,包含有price作为子元素的元素。

/catalog/*/price

以下的语法会选出有两层父节点,叫做price的所有元素。

/*/*/price

以下的语法会选择出文件中的所有元素。

//*

要注意的是,想要存取不分层级的元素,XPath语法必须以两个斜线开头(//),想要存取未知元素才用星号(*),星号只能代表未知名称的元素,不能代表未知层级的元素。

选择分支
使用中括号可以选择分支。以下的语法从catalog的子元素中取出第一个叫做cd的元素。XPath的定义中没有第0元素这种东西。

/catalog/cd[1]

以下语法选择catalog中的最后一个cd元素:(XPathj并没有定义 first() 这种函式喔,用上例的 [1]就可以取出第一个元素。

/catalog/cd[last()]

以下语法选出含有price子元素的所有/catalog/cd元素。

/catalog/cd[price]

以下语法选出price元素的值等于10.90的所有/catalog/cd元素

/catalog/cd[price=10.90]

以下语法选出price元素的值等于10.90的所有/catalog/cd元素 的price元素

/catalog/cd[price=10.90]/price

选择一个以上的路径
使用Or操作数(|)就可以选择一个以上的路径。例如:

/catalog/cd/title | catalog/cd/artist

选择所有title以及artist元素

//title | //artist

选择所有title以及artist以及price元素

//title | //artist | //price

选择属性
在XPath中,除了选择元素以外,也可以选择属性。属性都是以@开头。例如选择文件中所有叫做country的属性:

//@country

选择所有含有country这个属性的cd元素:

//cd[@country]

以下语法选择出含有属性的所有cd元素

//cd[@*]

以下语法选择出country属性值为UK的cd元素

//cd[@country='UK']

只要掌握了xpath语法,理论上你就可以访问xml文件中的任意节点和任意值

转载于:https://www.cnblogs.com/Jinspet/archive/2009/02/03/1382824.html

xPath(他山之石)相关推荐

  1. Python的Xpath介绍和语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  2. Python案例:使用XPath的爬虫

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py#!/usr/b ...

  3. Python:XPath与lxml类库

    什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...

  4. xpath选择器简介及如何使用

    xpath选择器简介及如何使用 一.总结 一句话总结:XPath 的全称是 XML Path Language,即 XML 路径语言,它是一种在结构化文档(比如 XML 和 HTML 文档)中定位信息 ...

  5. python xpath用法_Python--xpath的使用

    chromedriver的版本问题:如果出现版本不匹配,可以尝试换一个版本的chromedriver: web自动化的元素定位--8大元素定位 6种元素: id:---id是唯一的,这时候可以用id定 ...

  6. DOM+XPath提取规则注记!

    下面是使用DOM+Xpath提取html中页面时经常使用的Xpath规则的一些示例: XPath相关的规则 没有属性 //B[not(@*)] 没有类属性 //B[not(@class)] 要求链接有 ...

  7. XPath与多线程爬虫

    一.  Xpath的介绍与配置 1.      XPath是什么 XPath是一门语言 XPath可以在XML文档中查找信息 XPath支持HTML XPath通过元素和属性进行导航 总结: XPat ...

  8. 爬虫之Xpath详解

    爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素, ...

  9. python爬取疫情信息html.xpath p标签_python xpath 如何过滤div中的script和style标签

    爬取一个页面中的div,想获取div中的文字,我是这么写的: selector.xpath('//div[@class="text-con"]').xpath('string(.) ...

  10. 【Python】数据提取xpath和lxml模块(糗事百科的爬虫)

    程序中用到的一些零碎知识点: 一.列表推导式:帮助我们快速生成一堆数据的列表 1.format:字符串格式化的一种方式 >>> ["10月{}日".format( ...

最新文章

  1. PCL—低层次视觉—点云分割(基于凹凸性)
  2. 进程间通信学习小结(共享内存)
  3. Python-面向对象 (二 继承)
  4. Linux调试技术介绍
  5. 三插头内部结构图_三方面维护硬度计才能使寿命更长久
  6. 【python-numpy】工具包中np.random.choice()的用法详解及其参考
  7. 面试题——4种数组去重的方法
  8. [渝粤教育] 西北大学 仪器分析 参考 资料
  9. 多重线性回归 多元线性回归_了解多元线性回归
  10. MySQL笔记——DQL查询数据
  11. 7-7 12-24小时制 (15 分)
  12. 本地部署Bootstrap3
  13. Android用外部应用打开文件,Android N 以上使用其他应用打开文件 FileProvider
  14. c语言中图像处理相关函数,C语言图像处理函数大全
  15. JZOJ 1039. 【SCOI2009】windy数
  16. .net程序部署(setupFactory进阶)
  17. php textarea换行
  18. 第一个案例实操——WordCount
  19. GIVE root password for maintenance
  20. Suricata工控规则研究

热门文章

  1. Windows核心编程_重绘ListBox样式(仿QQListBox)
  2. 如何在不接收返回值的情况下获取返回值?
  3. 安装配置管理 之 安装和配置 JPackage Java
  4. Spring源码解析(五)——自定义标签解析
  5. 使用JavaScript实现长方形、直角三角形、平行四边形、等腰三角形、倒三角、数字三角形...
  6. 【python】Django设置SESSION超时时间没有生效?
  7. eclipse插件:OpenExplorer快速打开文件目录
  8. windows程序设计笔记(10)
  9. 2012年,拥抱梦想实现梦想!
  10. CentOS7下让Asp.Net Core的网站自动运行