专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » xpath语法:C#操作xml的xpath语法 »正文

xpath语法:C#操作xml的xpath语法

来源: 发布时间:星期五, 2009年1月9日 浏览:115次 评论:0
  以前也发过有关.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属性值为UKcd元素

//cd[@country='UK']  只要掌握了xpath语法理论上你就可以访问xml文件中任意节点和任意值

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: