论坛首页 入门技术论坛

使用xpath操作xml(一.入门知识)

浏览 2863 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-26  
由于项目需要,自己学习了一下xpath的相关知识,就把这些简单的整理一下,下面的是xpath的入门以及使用,方便需要的朋友们.

1.XPath是什么
    XPath(可扩展路径)是给XSL转换[XSLT]和XPointer[XPointer]的共享功能提供一个共用的句法及语义的结果。XPath的主要的目是用于对XML文档元件寻址。在支持这个主要目的的同时,它也为字符串,数字和布尔的操作提供了基本手段。XPath使用简明的、非XML句法以便於在URIs和XML属性值以内使用XPath,XPath对XML文档的抽象的、逻辑的结构而非它的表面句法进行操作,XPath的名字源于它在URL中用作对XML文档的层次的结构进行导航一个路径标志。

除了用做寻址外,XPath也被设计成以便它有能被用于匹配的一个自然的子集(测试一个节点是否匹配一个模式);XSLT中描述了XPath在这方面的使用。

  XPath将一个XML文档建模成为一棵节点树,有不同类型的节点,包括元素节点,属性节点和正文节点。XPath定义了一种方法来计算每类的节点的字串值。一些节点的类型也有名字。XPath充分支持XML命名空间[XMLNames]。这样,节点的名字被建模成由一个局城部分和可能为空的命名空间 URI组成的对;这被称为扩展名。

2.XPath的基本语法

    首先XPath返回的类型有以下几种:

  1:节点集合(无序的、无重复的节点集合)

  2:布尔(真或假)

  3:数字(一个浮点数字)

  4:字符串(UCS字符的顺序)

  XPath的地址路径

  地址路径是xpath用于定位的一条语句

  基本的语法如下:

  /选择XML文档的根结点

  /*选择根结点的所有子节点,

  *匹配任意子节点

  /x选择根结点的所有x元素

  //book选择根结点的所有后代节点中的book元素

  //@id选择含有id属性的子节点

    para[1]选择上下文节点的第一个para孩子

  //vendor[@id='id1_2']/book选择符合“属性id=’id1_2’”的所有book元素

    /bib/vendor/book[year>2002]选择符合“元素year>’2002’”的所有book元素

    text()选择上下文节点的所有的正文节点孩子

  @name选择上下文节点的name属性

  @*选择上下文节点的所有的属性

  */para选择上下文节点的所有的para孙子

  /doc/chapter[5]/section[2]选择doc的第五个chapter的第二个section

  .//para选择上下文节点的para元素子孙

  para[@type="warning"]选择的上下文节点的所有的有属性type且值为warning的para孩子

  chapter[title="Introduction"]选择上下文节点的chapter孩子如果它有一个或多个title孩子且字串值为Introduction

  employee[@secretaryand@assistant]选择上下文节点的所有既有secretary属性又有assistant属性的employee孩子

  chpater[title]选择的上下文节点中有一个或一个以上title孩子的chpater孩子

  1:child是缺省轴。例如,地址路径div/para是child:XSL教程:学会如何使用XPath入门iv/child::para的缩写。

  2:属性也有缩写形式:attribute::能被缩写成@。例如,地址路径para[@type="warning"]为 child::para[attribute::type="warning"]的缩写,也就是选择有type属性且属性值为warning的para孩子。

  3://是/descendant-or-self::node()/的缩写。例如,//para是/descendant- or-self::node()/child::para的缩写,因此选择文档中所有的para元素(即使para元素是文档元素,也会被//para所选择,因为文档元素是根节点的孩子);div//para是div/descendant-or-self::node()/child::para的缩写,因此将选择div孩子的所有para子孙.

这里面是xpath的一些详细介绍和用法:
http://msdn.microsoft.com/en-us/library/ms256115(VS.85).aspx
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics