XPath操作XML文件的很方便和灵活。

下面介绍一些比较常用的XPath语法

<?xml version="1.0" encoding="utf-8"?>
<BookList>
  <Book Name="我的二战回忆录" Author="丘吉尔" Price ="135">
    <Chapter Index="Chapter1" Title="胜利者的蠢事" />
    <Chapter Index="Chapter2" Title="和平的鼎盛时期" />
    <Chapter Index="Chapter3" Title="潜伏的危险" />
    <Chapter Index="Chapter4" Title="阿道夫.希特勒" />
  </Book>
  <Book Name="泰戈尔诗集" Author="泰戈尔" Price ="20">
    <Chapter Index="Chapter1" Title="园丁集" />
    <Chapter Index="Chapter2" Title="飞鸟集" />
  </Book>
</BookList>

1.选取节点

路径表达式 结果
BookList 选取根元素 bookList 所有子节点
/BookList 选取根元素 bookList,注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
//Book 选取所有 book 子元素,而不管它们在文档中的位置。
BookList//Book 选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@Title 选取所有名为 Title 的属性。

代码如下:

/// <summary>
        /// 读取节点
        /// </summary>
        /// <param name="xmlFile"></param>
        private void ReadXmlNode(string xmlFile)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlFile);

XmlNode blnode = xmlDoc.SelectSingleNode("BookList");

XmlNode blnode1 = xmlDoc.SelectSingleNode("/BookList");

XmlNode bookNode = xmlDoc.SelectSingleNode("BookList/Book");

XmlNode titleAttr = xmlDoc.SelectSingleNode("//@Title");
        }

2.谓语的使用

路径表达式 结果
/BookList/Book[1] 选取BookList下第一个Book节点
/BookList/Book[last()] 选取BookList下最后一个Book节点
/BookList/Book[last()-1] 选取BookList下倒数第二个Book节点
/BookList/Book[position()<3] 选取最前面的两个属于BookList 节点的子元素的 Book 节点
//Book[@Name] 选取拥有Name属性的Book节点
//Book[@Name = 'book1'] 选取Name属性是‘book1’的Book节点
//Book[@Price>100] 选取Price价格大于100的Book节点
//Book[@Price>100]/Chapter 选取Price价格大于100的Book下的Chapter元素

3.通配符的使用

通配符 描述 路径表达式 结果
“*” 匹配任何元素节点 BookList/* 返回BookList的所有子节点
“@*” 匹配任何属性 //@* 返回所有的属性
node() 匹配任何节点 BookList/node() 返回BookList的所有子节点

4.选取多个路径

路径表达式 结果
//@Title | //@Index | //@Author 选取所有的Title属性,Author属性和Index属性
//Book | //Chapter 选取所有的Book节点和Chapter节点

5.XPath轴

路径表达式 结果
child::Chapter 获取当前节点的Chapter子节点
attribute::Name 获取当前节点的Name属性

转载于:https://www.cnblogs.com/LouisZhu/archive/2010/07/06/1772500.html

XML文件操作下之XPath相关推荐

  1. php复制xml文件,PHP_php xml文件操作实现代码(二),复制代码 代码如下:?php //创 - phpStudy...

    php xml文件操作实现代码(二) 复制代码 代码如下: //创建一个新的DOM文档 $dom = new DomDocument(); //在根节点创建departs标签 $departs = $ ...

  2. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  3. 新浪微博 XML 文件操作助手

    TAG: 新浪微博 XML 文件操作助手 API /// <summary> /// XML 文件操作助手 /// </summary> public class XmlHel ...

  4. c语言生成文件可以删,C语言-文件操作下

    文件操作下 各种printf对比记忆 printf--sprintf--fprintf 都是变参函数:参数形参中有"...",最后一个固参通常是格式描述串(包含格式匹配符),函数的 ...

  5. php xml expat,php 使用expat方式解析xml文件操作示例

    本文实例讲述了php 使用expat方式解析xml文件操作.分享给大家供大家参考,具体如下: test.xml: George John Reminder George2 John2 Reminder ...

  6. php操作xml文件,php xml文件操作代码(一)

    创建SimpleXML对象 学习操作xml的朋友可以看看. example.xml文件: $xml = simplexml_load_file('example.xml'); //创建SimpleXM ...

  7. C# XML文件操作类XmlHelper

    类的完整代码: using System; using System.Collections; using System.Xml; namespace Keleyi.Com.XmlDAL { publ ...

  8. Java读写xml文件操作(3W)what why how where

    一. what 1.xml是一种可扩展的标记语言. 2.标记语言:是一种通过标签来描述数据的一门语言. 3.可扩展:标签的名字可以自己定义. 4.可以说xml文件是由标签组成,而标签是可以自定义的. ...

  9. tinyxml2 数组_7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml...

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  10. android xml文件操作类,android操作xml

    android操作xml封装后的类,包括创建xml和读xml. public class XmlParserUtil { //创建xml文件 public static void createXmlF ...

最新文章

  1. 嵌入式 linux 进程锁,嵌入式  Linux线程锁详解pthread_mutexattr_t
  2. 构建、测试和部署驱动程序
  3. 备忘录模式(Memento)
  4. java long 对应mybati类型_修改 mybatis-generator 中数据库类型和 Java 类型的映射关系...
  5. android transfer error: Read-only file system
  6. 樊登高效休息法心得400字_从3个方面入手,让运营工作更高效!
  7. vue 回到顶部简单动画效果
  8. “衣衫合身定制”获数百万元天使轮投资,在线定制男性专属衬衫
  9. leetCode最短补全词
  10. 上架CiscoWS-C4948E设备及升级IOS
  11. 厨师 做菜 java_厨师做菜心得
  12. 原来iPhone自带Respring(注销重启桌面)功能
  13. python打字机效果_如何在电脑键盘打字的时候有打字机的声音效果?
  14. 早起看CMU15213课程第二天
  15. Spark中组件Mllib的学习16之分布式行矩阵的四种形式
  16. android系统手机流量控制方法,如何实现Android手机流量的控制
  17. Ext.grid.CheckboxSelectionModel 只能选一行,不能全选和多选
  18. JAVA逻辑推理题1-谁是凶手
  19. 【day8】【洛谷算法题】-P3954成绩-刷题反思集[入门1顺序结构][附一周思考总结]
  20. [Reverse]PC微信(一)个人数据基址

热门文章

  1. python学习之猫狗数据集的分类实验(一)
  2. 【HTML学习笔记/Linux学习笔记】阿里云服务器网站快速部署(宝塔便捷工具)
  3. Python气象绘图教程(二十一)—Cartopy_10
  4. Redis未授权访问漏洞实验
  5. Java权限修饰符、final、常量、枚举、抽象类、接口
  6. linux学习(七)鸟叔第十一章:正则表达式
  7. hint: (e.g., ‘git pull ...‘) before pushing again. hint: See the ‘Note about fast-forwards‘ in ‘git
  8. 校园导游咨询(图的应用)
  9. 【Python】socket同时收发与多线程防止input阻塞
  10. 数字经济驶入量质齐升新阶段