在网上找到的,不过具体的作者并不知道。如果您看到了这篇文章,还请告诉我。我会补上您的版权信息。

以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的“sql”语句xpath。由于本系列帖子的目的不在于详细介绍xpath语法所以,我借用了园子里leves的帖子来简单介绍一下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文件中的任意节点和任意值

2012-4-24新增:

如果需要根据节点的值来进行查找,可以使用contains函数。例如选择所有artist节点里面包含B的节点

//artist[contains(text(),'B')]       其中text()为artist的值

转载于:https://www.cnblogs.com/qianlifeng/archive/2010/04/26/1721459.html

【转】xPath语法介绍相关推荐

  1. 〖Python网络爬虫实战⑫〗- XPATH语法介绍

    订阅:新手可以订阅我的其他专栏.免费阶段订阅量1000+ python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏 ...

  2. python xpath爬虫_Python爬虫(2):XPath语法

    OK,上次我们说到了网页爬虫的一个思路:首先说一下网页爬虫的整个思路方法:先爬取整个网页,也就是将网页的源代码给获取下来 爬取下来的网页再通过文本解析提取,找到我们需要的信息,可以是图片或者文字 然后 ...

  3. Python爬虫xpath语法及案例使用

    Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...

  4. python xpath语法-Python爬虫基础之XPath语法与lxml库的用法详解

    前言 本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 XPath 即为 ...

  5. python xpath语法-python xpath 基本用法

    发布时间: pythonercn 8 months, 3 weeks ago 在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也 ...

  6. python的xpath用法_python之Xpath语法

    python视频教程栏目介绍python的Xpath语法. 一.XMl简介 (一)什么是 XMLXML 指可扩展标记语言(EXtensible) XML 是一种标记语言,很类似 HTML. XML 的 ...

  7. XPath语法 在C#中使用XPath例子与用法

    XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" en ...

  8. C#操作xml之xpath语法

    以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的&quo ...

  9. Python 爬虫利器三之 Xpath 语法与 lxml 库的用法

    原文链接https://cuiqingcai.com/2621.html 前言 前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxm ...

最新文章

  1. centos安装python3小白_Centos7 安装Python3
  2. 嵌入式烤箱能不能放台面上_2021年开放式厨房怎么设计?先来做做嵌入式家电的功课吧!...
  3. Python 单元测试详解
  4. 电脑怎么重置host_电脑又双叒叕卡顿?究竟要“重装”还是“重置”?原来这区别大了...
  5. 从头开始写框架(二):孕育框架的种子_中
  6. ORACLE多表关联的update语句
  7. win10 Eprime 2.0安装记录
  8. 万恶的ie(还好只是ie11)
  9. 皮克定理(计算多边形面积)
  10. 架构系列---QR二维码和扫描二维码登陆原理
  11. 矩阵代数(四)- 分块矩阵
  12. 个人开公司的流程及费用
  13. Office Word中由于自定义了新的样式名称,而导致题注显示:错误!文档中没有指定的样式文字
  14. react 的 render 函数
  15. Excel数据透视表排序
  16. Webpack打包css文件-css-loader+style-loader
  17. 初次来到博客园进行交流学习还请大家多指教!
  18. Squirrel and chestnut CodeChef - SQUIRREL
  19. 一些觉得不错的国外Mooc课程
  20. 【vcpkg】下载软件包时的提示

热门文章

  1. 接口返回500一般是什么错_什么情况下?超过了500万元的销售额标准,也不用办理一般纳税人资格认定?...
  2. (5)ISE14.7 开发流程(FPGA不积跬步101)
  3. (99)利用任务task实现单字节乘法功能,面试必问(二十三)(第20天)
  4. (73)FPGA模块调用(VHDL调用system Verilog)
  5. 5G时代FPGA需求分析
  6. FPGA复位方法总结
  7. 箭头 运算符_Java 运算符
  8. 2024.常见一些设计类模板
  9. 机票预定系统类图_出行干货|在法国,廉价机票攻略
  10. 并行计算(二)——通讯