Xpath这是非常强大。但对比是一个更复杂的技术,希望上面去博客园特别想看看一些专业职位。下面是一些简单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']

针对多个属性的查找:

Books/book[@author='John' and @year='2009' and @language='En']

版权声明:本文博客原创文章,博客,未经同意,不得转载。

C#使用xpath找到一个节点的更多相关文章

  1. [CareerCup] 4.6 Find Next Node in a BST 寻找二叉搜索树中下一个节点

    4.6 Write an algorithm to find the'next'node (i.e., in-order successor) of a given node in a binary ...

  2. 剑指offer第二版面试题7:二叉树的下一个节点(JAVA版本)

    题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 根据中序遍历的特点,要找到一个节点的下一个节点无非 ...

  3. 第一百二十六节,JavaScript,XPath操作xml节点

    第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...

  4. 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇

    在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...

  5. OSG中找到特定节点的方法

    OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...

  6. OSG中找到特定节点的方法(转)

    OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...

  7. C#用xpath查找某节点

    C#用xpath查找某节点 从根节点一直下来的相对路径才能确定Xpath的写法. /root/<节点1>/<节点2>//<@属性> Xpath是功能很强大的,但是也 ...

  8. 单向链表在O(1)时间内删除一个节点

    说删链表节点,第一时间想到就是遍历整个链表,找到删除节点的前驱,改变节点指向,删除节点,但是,这样删除单链表的某一节点,时间复杂度就是O(n),不符合要求: 时间复杂度是O(n)的做法就不说了,看看O ...

  9. 剑指offer-二叉树的下一个节点

    题目描述   给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针.   解题思路 分情况考虑如下: 若该节点为空,则直 ...

随机推荐

  1. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  2. hdu3974(线段树+dfs)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3974 题意:给定点的上下级关系,规定如果给i分配任务a,那么他的所有下属.都停下手上的工作,开始做a. ...

  3. android学习---SeekBar和RatingBar

    SeekBar 拖动条:拖动条和滚动栏类似,当是拖动条能够拖动滑块改变进度 RatingBar 星级评分条:星级评分条与拖动条相似 SeekBar特有的xml属性 android:thumb    指 ...

  4. 存储管理(一):openfiler介绍及存储理解

    openfiler是一个免费的.开源的基于浏览器的网络存储产品,支持基于文件的的网络连接存储(NAS)和基于块的存储区域网(SAN).支持的协议有smb,cifs,nfs,http/dev和ftp. ...

  5. 项目之软件project(我专业四年都未曾知道这四个字的含义,几句话便懂了)

    潘鹏在CSDN上原创.如其它站点转载请注意排版和写明出处: 软件project的本质 一级标题 控制 质量 二级标题  成本  扩展  高内聚低耦合 效率 控制: 成本:企业要求的是以最快的速度完毕可 ...

  6. 《JavaScript设计模式与开发实践》读书笔记之享元模式

    1. 享元模式 享元模式是一种用于性能优化的模式,享元模式的核心是运用共享技术来有效支持大量细粒度的对象 1.1 传统的文件上传方法 以文件上传为例,文件上传功能可以选择依照队列,一个一个的排队上传, ...

  7. hdu5384(trie树)

    hdu5384 给定n个字符串Ai 给定m个字符串Bi 问所有的Bi在每个Ai中出现了多少次 很显然,对Bi建Trie图,然后每次用Ai去匹配的时候,不断查找当前匹配串的最长后缀,这样就能找到答案了 ...

  8. Oracle SQL Lesson (1) - 使用SQL Select语句获取数据

    第一节课: 启动数据库并且使用特定用户连接:su - oracle; 启动sqlplus并且使用sys连接:conn / as sysdba; 启动数据库:startup; 解锁用户:alter us ...

  9. crontab,想说爱你不easy

    悲剧的背景 跑自己主动化脚本的机器连不上toastserver了, 仅仅能自己写个脚本每天跑了. 当然要放在crontab里了. 5 3 * * * sh ~/nosecron.sh 更悲剧的结果 第 ...

  10. HTTP相关概念

    最近观看HTTP权威指南.这本书是一个小更,欲了解更多详细信息,我们不能照顾.但一些基本概念仍然应该清楚.在这里,我整理: HTTP--因特网的多媒体信使 HTTP 使用的是可靠的传输数据协议,因此即 ...