XML文件操作下之XPath
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相关推荐
- php复制xml文件,PHP_php xml文件操作实现代码(二),复制代码 代码如下:?php //创 - phpStudy...
php xml文件操作实现代码(二) 复制代码 代码如下: //创建一个新的DOM文档 $dom = new DomDocument(); //在根节点创建departs标签 $departs = $ ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- 新浪微博 XML 文件操作助手
TAG: 新浪微博 XML 文件操作助手 API /// <summary> /// XML 文件操作助手 /// </summary> public class XmlHel ...
- c语言生成文件可以删,C语言-文件操作下
文件操作下 各种printf对比记忆 printf--sprintf--fprintf 都是变参函数:参数形参中有"...",最后一个固参通常是格式描述串(包含格式匹配符),函数的 ...
- php xml expat,php 使用expat方式解析xml文件操作示例
本文实例讲述了php 使用expat方式解析xml文件操作.分享给大家供大家参考,具体如下: test.xml: George John Reminder George2 John2 Reminder ...
- php操作xml文件,php xml文件操作代码(一)
创建SimpleXML对象 学习操作xml的朋友可以看看. example.xml文件: $xml = simplexml_load_file('example.xml'); //创建SimpleXM ...
- C# XML文件操作类XmlHelper
类的完整代码: using System; using System.Collections; using System.Xml; namespace Keleyi.Com.XmlDAL { publ ...
- Java读写xml文件操作(3W)what why how where
一. what 1.xml是一种可扩展的标记语言. 2.标记语言:是一种通过标签来描述数据的一门语言. 3.可扩展:标签的名字可以自己定义. 4.可以说xml文件是由标签组成,而标签是可以自定义的. ...
- tinyxml2 数组_7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml...
数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...
- android xml文件操作类,android操作xml
android操作xml封装后的类,包括创建xml和读xml. public class XmlParserUtil { //创建xml文件 public static void createXmlF ...
最新文章
- 嵌入式 linux 进程锁,嵌入式 Linux线程锁详解pthread_mutexattr_t
- 构建、测试和部署驱动程序
- 备忘录模式(Memento)
- java long 对应mybati类型_修改 mybatis-generator 中数据库类型和 Java 类型的映射关系...
- android transfer error: Read-only file system
- 樊登高效休息法心得400字_从3个方面入手,让运营工作更高效!
- vue 回到顶部简单动画效果
- “衣衫合身定制”获数百万元天使轮投资,在线定制男性专属衬衫
- leetCode最短补全词
- 上架CiscoWS-C4948E设备及升级IOS
- 厨师 做菜 java_厨师做菜心得
- 原来iPhone自带Respring(注销重启桌面)功能
- python打字机效果_如何在电脑键盘打字的时候有打字机的声音效果?
- 早起看CMU15213课程第二天
- Spark中组件Mllib的学习16之分布式行矩阵的四种形式
- android系统手机流量控制方法,如何实现Android手机流量的控制
- Ext.grid.CheckboxSelectionModel 只能选一行,不能全选和多选
- JAVA逻辑推理题1-谁是凶手
- 【day8】【洛谷算法题】-P3954成绩-刷题反思集[入门1顺序结构][附一周思考总结]
- [Reverse]PC微信(一)个人数据基址
热门文章
- python学习之猫狗数据集的分类实验(一)
- 【HTML学习笔记/Linux学习笔记】阿里云服务器网站快速部署(宝塔便捷工具)
- Python气象绘图教程(二十一)—Cartopy_10
- Redis未授权访问漏洞实验
- Java权限修饰符、final、常量、枚举、抽象类、接口
- linux学习(七)鸟叔第十一章:正则表达式
- hint: (e.g., ‘git pull ...‘) before pushing again. hint: See the ‘Note about fast-forwards‘ in ‘git
- 校园导游咨询(图的应用)
- 【Python】socket同时收发与多线程防止input阻塞
- 数字经济驶入量质齐升新阶段