《XML程序设计》PPT课件.ppt_第1页
《XML程序设计》PPT课件.ppt_第2页
《XML程序设计》PPT课件.ppt_第3页
《XML程序设计》PPT课件.ppt_第4页
《XML程序设计》PPT课件.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,XML程序设计 第8章,XPath语言,2,主要内容 XPath简介 Node节点 XPath路径表达式的结构 谓词 节点集上使用谓词 节点集的并运算 Java XPath API 节点集与函数 编译XPath路径表达式 应用实例-图书查询 难点 XPath路径表达式的结构 谓词,第8章 导读,3,概述,W3C在1999年推出XML Path Language (XPath) Version 1.0 规范,简称XPath 1.0语言规范 。2007年推出XPath 2.0语言规范。 使用XPath可以很容易地编写查询XML中数据的XPath路径表达式,XPath语言为应用程序从XML文件中获得所需要的特殊数据提供了更加方便、快捷的语法,XPath的作用非常类似SQL语言在关系数据库中的地位。,4,8.1 XPath简介,XPath语言的核心是给出用于从XML文件中查找标记的语法规则,即编写XPath路径表达式,以便使应用程序更加方便、快捷地从XML文件中检索到所需要的数据。,5,8.1.1 初识XPath路径表达式,一个XPath路径表达式,简称XPath表达式,由若干个“定位步”所构成 。 例题8.1 p187 针对上例中的XML文件的XPath路径表达式:/学生列表/学生/姓名 返回example8_1.xml中与该XPath路径表达式匹配的所有标记,即返回example8_1.xml文件中的所有名字为“姓名”的标记。 下面的XPath路径表达式: /学生列表/学生2/姓名 返回example8_1.xml文件中第2个名称为“学生”标记中的所有“姓名”子标记。 XPath路径表达式的核心是给出一个匹配XML文件中标记的模式,也可以说XPath路径表达式的核心是用于表示满足一定条件的标记所组成的集合。,6,8.1.2 使用XPath API,使用Java XPath API处理XPath路径表达式的步骤如下: 1使用javax.xml.xpath包中的XPathFactory类调用其类方法newInstance()实例化一个XPathFactory对象,如: XPathFactory xPathFactory=XPathFactory.newInstance(); 2步骤1中得到的XPathFactory对象调用newXPath()方法返回一个XPath对象,如: XPath xPath=xPathFactory.newXPath(); 3使用org.xml.sax包中的InputSource类将XML文件封装到一个InputSource对象中,如: InputSource source=new InputSource(“student.xml“); 4在第2步骤获得的XPath对象调用evaluate()方法来计算XPath路径表达式,如: NodeList nodelist= (NodeList)xPath.evaluate(“学生列表/学生2/姓名“,source,XPathConstants.NODESET);,7,8.2 Node节点,XPath语言把XML文件中的标记、标记包含文本等组成的数据结构看作是一个树形结构,即将XML文件看作是由Node类型节点构成的树。Node节点由可细分为 Document,Element,Text,Attribue,ProcessingInstruction和Namespace节点。,8,8.2.1 节点之间的关系,树形结构中的各个节点按其在树中的位置形成各种关系,比如一个节点是另一个节点的子节点等。和通常树形结构数据中使用的术语一样,XPath语言也经常使用下列表明节点之关系的术语:子节点,父节点、子孙节点、祖先节点,兄节点、弟节点,兄弟节点等。,9,8.2.2 节点的类型_1,Path语言将XML文件看作是由Node类型节点构成的树,而且Node类型节点还可细分为Document,Element,Text,Attribute,ProcessingInstruction和Namespace等节点。 XPath将下面的文件employee.xml (见190页)看作是一个如图8.2所示的树形结构。,10,8.2.2 节点的类型_2,1Document(文档)节点 XPath语言将整个XML文件看作是一个树形结构的数据,并把XML文件作为该树的根节点,而且这个根节点的类型是Document类型的节点。 2Element(元素)节点 XPath语言将XML文件中的每个标记看作是一个Element节点。 3Text(文本)节点 XPath语言将XML文件中标记中包含的文本作是一个Text节点,而且该Text节点包含的文本内容就是它所对应的文本。 4Attribute(属性)节点 XPath语言将XML文件中标记含有的属性看作是一个Attribute节点。 5ProcessingInstruction(操作指令)节点 XPath语言将XML文件中操作指令看作是一个ProcessingInstruction节点。 6Namespace节点 XPath语言将XML文件中标记的的开始标签中声明的名称空间看作是一个Namespace节点,该节点的名字就是名称空间的前缀,节点包含的文本内容就是名称空间的名字。 7Comment(注释)节点 XPath语言将XML文件中注释看作是一个Comment节点,注释节点包含的文本内容就是注释中的内容。,11,8.2.3 节点的名字与值,Java APath API使用对应的接口或类和XPath规范中的节点类型相对应,节点常用的以下3个方法获取和它有关信息。,12,8.3 XPath路径表达式的结构,一个XPath路径表达式由若干个“定位步”构成,一个XPath路径表达式将返回一个节点集,即XPath路径表达式的核心是表示满足一定条件的标记所组成的集合。,13,8.3.1 绝对路径与相对路径,XPath路径表达式由若干“定位步”从左向右用“/”连接而构成。XPath路径表达式分为绝对路径和相对路径,从根节点开始(Document节点)的路径表达式称做绝对路径,否则称为相对路径。 例题8.3 p192,14,8.3.2 定位步与节点集,1定位步 “定位步”是构成XPath的基本单位,用于确定出相应的若干个节点,一个定位步由轴(axis)、节点测试(node test)和可选的谓词所构成。定位步的格式:轴:节点测试 谓词 2定位步与节点的寻找 定位步的作用找出节点。定位步中的轴的作用是在树形结构数据中给出寻找Node节点的方向;节点测试的作用是给出寻找的Node节点应当属于哪种细分的类型;谓词的作用是给出所寻找的节点所需要满足的进一步的条件(定位步的谓词是可选项)。 3XPath路径表达式与节点集 XPath路径表达式由若干“定位步”从左向右用“/”连接而构成。 XPapth路径表达式寻找出的节点集也称作XPapth路径表达式返回的节点集,或XPapth路径表达式的“值”。,15,8.3.4 节点测试,Path路径表达式由若干“定位步”从左向右用“/”连接而构成路径,而定位步又是由轴(axis)、节点测试(node test)和可选的谓词所构成。 使用定位步的当前节点根据轴确定所寻找的节点的方向,根据节点测试确定所寻找的节点的具体类型。 一个节点测试可以是标记的名字、text()、node()或comment()等。例题8.5,例题8.6 p198,16,8.4 谓词,“定位步”是构成XPath的基本单位,用于确定出相应的若干个节点,一个定位步由轴(axis)、节点测试(node test)和可选的谓词所构成。定位步的格式:轴:节点测试 谓词 谓词(Predicates)是定位步中最吸引人的部分。,17,8.3.3 轴以及缩写,XPath路径表达式中的定位步使用轴来定位节点,而节点的具体类型由节点测试负责。例题8.4 p197,18,8.4.1 谓词的格式与作用,谓词的目的是给出定位步所寻找出的节点需满足的进一步条件,即当前节点在使用定位步的轴和节点测试找出若干个节点后,再使用谓词从这些节点中筛选出满足谓词条件的节点。谓词是用一对中括号扩起的条件表达式,谓词格式是: 条件表达式 使用带有谓词定位步: 轴:节点测试 谓词 的当前节点首先根据轴和节点测试寻找出若干个节点,然后从这些节点中再筛选出满足谓词条件的节点,即筛选出使得谓词中条件表达式为true的节点。 例题8.6 p198,19,8.4.2 寻找特殊位置的节点,在谓词中使用position()和last()函数可以寻找指定位置上的节点。 例如,对于定位步: 轴:节点测试 position()=2(缩写:轴:节点测试 谓词2) 使用该定位步的当前节点所寻找的是满足轴和节点测试的全部节点中的第2个节点。 例题8.6 p198,20,8.4.3 寻找有特殊属性的节点,在谓词中使用attribue轴或寻找具有指定属性或属性值的节点。 1. 寻找具有指定属性和属性值的节点 如果要寻找具有指定属性的节点,可以在谓词中使用: attribue:属性名1 逻辑关系符 attribue:属性名n 或使用缩写: 属性名1 逻辑关系符 属性名n 2. 使用contains函数 如果希望寻找具有指定属性,并且属性值中含有指定的字符串时,就可以在谓词中使用contains函数,格式是: contains(属性名,特定字符串) 例题8.6 p198,21,8.4.4 寻找有特殊关系节点的节点,1.寻找具有特殊关系节点的节点 如果要寻找具有特殊关系节点的节点,但对该特殊关系节点包含的内容没有特殊的要求,可以在谓词中使用: 轴:特殊关系节点名称1 逻辑关系符 轴: 特殊关系节点名称2轴: 特殊关系节点名称n 那么满足该谓词条件的节点必须和谓词中的节点形成轴所指定的特殊关系。例题8.6 p198 2. 使用contains函数 如果希寻找具有特殊关系节点的节点且特殊关系节点包含的文本需要含有指定的字符串时,就可以在谓词中使用contains函数,格式是: contains(轴:节点名称,特定字符串) 例题8.6 p198,22,8.4.5 使用谓词嵌套寻找节点,谓词的作用是给出节点需满足的进一步条件,因此允许谓词中继续使用谓词。 例如,对于谓词: 节点名属性名=特定值 那么满足上述谓词的节点需要有指定名字的子节点,而且子节点必须有指定的属性名和特定的属性值。 例如,对于谓词: following:节点名属性名=特定值 满足上述谓词的节点需要有指定名字的弟节点,而且弟节点必须有指定的属性名和属性值。 例如,对于谓词: descendant:节点名属性名=特定值 满足上述谓词的节点需要有指定名字的子孙节点,而且子孙节点必须有指定的属性名和特定的属性值。 例题8.6 p198,23,8.5 节点集上使用谓词,“XPath允许在XPath绝对路径最后寻找出的节点集上使用谓词,其作用是从当前节点集中筛选、过滤出所需要的节点,即从当前节点集中筛选、过滤出一个子集。其使用格式是: (绝对路径)谓词 例题8.6 p198,24,8.6 节点集的并运算,XPath语言允许将多个XPath路径表达式寻找出的节点集合使用“|”进行集合的并运算,所得到的节点集中的节点按着节点在XML中的对应的标记或文本出现的先后顺序排列。 例题8.6 p198,25,8.7 Java XPath API,在本章前面的8.1.2节介绍了怎样使用Java XPath API处理XPath路径表达式,其关键是使用Java XPath API提供的XPath对象调用evaluate()方法来计算XPath路径表达式。 XPath对象的evaluate()方法的常用格式如下: Object evaluate(String expression,InputSource source,QName returnType),26,8.7.1 按NodeSet计算,当XPath对象调用: evaluate(String expression,InputSource source,QName returnType) 方法,并将参数returnType可以取值为:XPathConstants.NODESET时,evaluate方法计算的结果是org.w3c.dom包中的一个NodeList对象,即evaluate方法返回org.w3c.dom包中的一个NodeList对象,该NodeList对象是由org.w3c.dom包中Node对象组成的一个节点集。,27,8.7.2 按Node计算,当XPath对象调用 evaluate(String expression,InputSource source,QName returnType) 方法,并将参数returnType可以取值为:XPathConstants.NODE时,evaluate方法计算的结果是org.w3c.dom包中的一个Node对象,即evaluate方法返回org.w3c.dom包中的一个Node对象,该Node对象对应着XPath路径表达式expression返回的节点集中的第一个节点。 例题8.7 p211,28,8.7.3 按字符串计算,当XPath对象调用 evaluate(String expression,InputSource source,QName returnType) 方法,并将参数returnType可以取值为:XPathConstants.String时,evaluate方法计算的结果是一个String对象,即evaluate方法返回一个String对象,该String对象对应着XPath路径表达式expression返回的节点集中的第一个节点包含的文本。 例题8.8 p212,29,8.7.4 按布尔值计算,当XPath对象调用 evaluate(String expression,InputSource source,QName returnType) 方法,并将参数returnType可以取值为: XPathConstants.BOOLEAN 时,evaluate方法计算的结果是一个Boolean对象,即evaluate方法返回一个Boolean对象。 例题8.8 p212,30,8.7.5 按数值计算,当XPath对象调用 evaluate(String expression,InputSource source,QName returnType) 方法,并将参数returnType可以取值为: XPathConstants.NUMBER 时,evaluate方法计算的结果是一个Double对象,即evaluate方法返回一个Double对象,该Double对象对应着XPath路径表达式expression返回的节点集中的第一个节点包含的文本所转换的Doube对象,如果文本内容无法转化为Double对象,evaluate方法返回:NaN,表示没有这样的数字。 例题8.9 p213,31,8.8 节点集与函数,XPath语言给出了几个作用与节点集上的函数。 1count(node-set)函数 count(node-set) 函数返回参数指定的节点集中的节点的个数,例如 count(/列车时刻表/列车/始发时间) 返回的值是2。 2id(object)函数 ID类型的属性的属性值具有互斥性,即所有ID类型的属性的属性值必须互不相同。如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论