`

XPath 学习笔记

    博客分类:
  • Xml
阅读更多
XPath: 表达式使用路径表示法(与 URL 中使用的路径表示法类似)寻址 XML 文档的各个部分

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。

基本 XPath 表达式
当前上下文:  以句点和正斜杠 (./) 作为前缀的表达式明确使用当前上下文作为上下文。
文档根: 以正斜杠 (/) 为前缀的表达式使用文档树的根作为上下文。
根元素 : 使用正斜杠后接星号 (/*) 的表达式将使用根元素作为上下文。
递归下降 : 使用双正斜杠 (//) 的表达式指示可以包括零个或多个层次结构级别的搜索。
特定元素 : 以元素名开头的表达式引用特定元素的查询,从当前上下文节点开始。


下面列出了最有用的路径表达式:
表达式 描述
nodename    选取此节点的所有子节点
/                   从根节点选取
//                 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.                  选取当前节点
..                 选取当前节点的父节点
@               选取属性

1. XPath and Xml
最常见的XML数据类型有:Element, Attribute,Comment, Text.
  Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
   Attribute, 指在<Employee name="">中的粗体部分。
   Comment,指形如:<!-- my comment --> 的节点。
   Text,指在<Name>Tom<Name>的粗体(Tom)部分。
  在XML中,可以用XmlNode对象来参照各种XML数据类型。
2.1 查询已知绝对路径的节点(集)  -----   SelectNodes、SelectSingleNode
   objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”)
   或者
   objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”)
   以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;
   如果没有查询的任何节点返回 Nothing。例如:
   objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
   If Not (objNode is Nothing) then
   ‘- Do process
   End If
2.2 查询已知相对路径的节点(集)
  可使用类似于文件路径的相对路径的方式来查询XML的数据
   objNode = objDoc.SelectSingleNode(“Company/Department”)
   objNodeList = objNode.SelectNodes(“../Department)
   objNode = objNode.SelectNode(“Employees/Employee”)
2.3 查询已知元素名的节点(集)
在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
  objNodeList = objDoc.SelectNodes(“Company//Employee”)
2.4 查询属性(attribute)节点
  以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
   objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)
   objNodeList = objDoc.SelectNodes(“Company//@id”)
2.5 查询Text节点
使用text()来获取Text节点。
  objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
2.6 查询特定条件的节点
  使用[]符号来查询特定条件的节点。例如:
   a. 返回id号为 10102的Employee节点
   objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
   b. 返回Name为Zhang Qi的Name 节点
  objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”)
   c. 返回部门含有职员22345的部门名称节点
   objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
3 XML数据的编辑
   3.1 增加一个元素的属性(attribute)节点
   Dim objNodeAttr As XmlNode
   objNodeAttr = objDoc.CreateAttribute("id", Nothing)
   objNodeAttr.InnerXml = "101"
   objNode.Attributes.Append(objNodeAttr)
   3.2 删除一个元素的属性
   objNode.Attributes.Remove(objNodeAttr)
   3.3 增加一个子元素(Element)
   Dim objNodeChild As XmlNode
   objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing)
   objNodeChild.InnerXml = "101"
   objNode.AppendChild(objNodeChild)
   3.4 删除一个子元素
   objNode.RemoveChild(objNodeChild)
   3.5 替换一个子元素
   objNOde.ReplaceChild(newChild,oldChild) 
分享到:
评论

相关推荐

    xpath学习笔记 比较入门大家共享

    XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于XML处理,如XSLT、XQuery以及XPointer等标准中。XPath通过路径表达式来选取XML文档中的元素、属性或其他类型的节点,使得我们可以...

    Dom4j 解析Xml文档及 XPath查询 学习笔记

    **标题:** Dom4j 解析Xml文档及 XPath查询 学习笔记 **正文:** XML(eXtensible Markup Language)是一种标记语言,常用于数据交换、配置存储以及文档结构化表示。在Java世界中,解析XML文档有多种库,其中Dom4j是...

    爬虫学习笔记(主要涉及scrapy,request,xpath,selenium等).md

    爬虫学习笔记(主要涉及scrapy,request,xpath,selenium等).md

    (官方)XPath教程

    编辑2.txt可能是一份XPath的学习笔记或者使用经验分享,记录了作者在学习过程中的一些发现和技巧。 掌握XPath对于处理XML数据至关重要,无论是简单的查询还是复杂的转换,都能得心应手。深入学习XPath教程,理解其...

    《Java JDK 6 学习笔记》配书示例

    《Java JDK 6 学习笔记》这本书很可能是为了帮助读者深入理解和掌握这个版本的Java编程语言及其开发环境。以下是一些关键知识点的详细说明: 1. **自动装箱与拆箱**:Java 6中引入了自动装箱和拆箱功能,使得基本...

    python 爬虫学习笔记

    Python 爬虫学习笔记涵盖了爬虫的基础知识、网络和前端基础、Requests 模块、请求头、GET 和 POST 请求、代理、Cookie 模拟登录、Quote 和 Unquote、登录和获取 Cookie、Post 和 Session、重试机制、JSON 和 ...

    Dom4j学习教程+API+xml实用大全+xml学习笔记+htc

    标题"Dom4j学习教程+API+xml实用大全+xml学习笔记+htc"提及了几个关键主题,包括Dom4j的学习资源、API文档,以及关于XML的实用指南和学习笔记,还提到了一个名为"htc"的文件,可能是关于HTC设备或技术的文档。...

    Yui_ext 学习笔记

    【Yui_ext 学习笔记】 Yui_ext 是基于 Yahoo! UI Library (YUI) 的扩展,主要用于构建富客户端的 Web 应用程序。这篇学习笔记主要介绍了 Yui_ext 的基础知识,适合对 JavaScript 和 HTML DOM 有一定了解的初学者。 ...

    Selenium WebDriver 学习笔记

    ### Selenium WebDriver 学习笔记知识点详解 #### 一、元素定位 Selenium WebDriver 提供了丰富的API用于元素定位,常见的定位策略包括: - **ID**:`driver.findElement(By.id("elementId"))` - **Name**:`driver...

    JAVA JDK6 学习笔记

    **Java JDK6 学习笔记概述** Java JDK6(Java Development Kit 6)是Oracle公司发布的一个用于开发Java应用程序的重要工具集,包含了JRE(Java Runtime Environment)和一系列的开发和调试工具。这个版本的JDK发布...

    java学习笔记JDK6课件和课本代码

    本资料包“java学习笔记JDK6课件和课本代码”专注于JDK6版本的学习,这个版本是Java历史上的一个重要里程碑,引入了许多新特性并优化了性能。 首先,我们来了解JDK6的一些关键特性: 1. **增强的泛型**:JDK6对...

    良葛格java jdk 6.0学习笔记代码.rar

    "良葛格"的Java JDK 6.0学习笔记旨在帮助初学者和有经验的程序员深入理解这一版本的Java语言特性,以及如何利用JDK 6.0进行开发。 一、JDK 6.0主要特性 1. **自动内存管理**:Java 6引入了更高效的垃圾回收机制,...

    Dom4j学习笔记

    **标题解析:** "Dom4j学习笔记" 这个标题明确指出了我们要探讨的主题——Dom4j。Dom4j是一个流行的Java库,用于处理XML文档。它提供了丰富的API,使得XML的读取、写入、操作变得简单易行。在学习笔记中,通常会涵盖...

    Selenium学习笔记源代码

    **Selenium学习笔记源代码** Selenium是一款强大的自动化测试工具,尤其在Web应用程序的测试领域,它被广泛应用。本学习笔记源代码旨在帮助开发者和测试工程师深入理解和掌握Selenium的基本用法,通过实际操作和...

    DOM4J学习笔记

    **DOM4J学习笔记** DOM4J是一个Java库,它提供了强大的XML处理功能,包括解析、操作和生成XML文档。这个库是开源的,广泛应用于Java项目中,因其易用性和灵活性而备受开发者喜爱。这篇笔记将深入探讨DOM4J的核心...

    XML DOM4J学习笔记

    本篇笔记将深入探讨XML DOM4J的学习要点。 一、XML基础知识 1. XML结构:XML文档由元素(Element)、属性(Attribute)、文本内容(Text)、注释(Comment)等组成。每个XML文档都有一个根元素,其他元素嵌套在根...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,...

    MLDN学习笔记 —— XML学习笔记

    XML,全称Extensible Markup Language,可扩展标记语言,是一种用于标记数据的结构化语言,...通过这些学习资料,你将能够深入理解XML的各个方面,从基础语法到高级用法,从而在实际工作中更有效地处理和利用XML数据。

Global site tag (gtag.js) - Google Analytics