35、XpathNavigator Xpath导航器 System.Xml.XPath;
XPathNavigator类包含移动和选择XML所需元素的所有方法。
一、创建:
a.如果是从XPathDocument中创建,则是只读的,只能浏览数据;
b.如果是从XmlDocument中创建,则可以编辑文档;
XPathDocument doc = new XPathDocument("./books.xml");
XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
二、读取
使用Select()方法通过XPath语句查询;
使用XPathNodeIterator类,MoveNext()方法移动下一个节点;Current属性表示当前节点;
//查询bookstore的子元素book中genre属性值为novel的所有节点
XPathNodeIterator iter = nav.Select("/bookstore/book[@genre='novel']");
while (iter.MoveNext())
{
//迭代所有子代节点
XPathNodeIterator newIter = iter.Current.SelectDescendants(XPathNodeType.Element, false);
while (newIter.MoveNext())
{
Console.WriteLine(newIter.Current.Name + " : " + newIter.Current.Value);
}
}
三、计算
使用Evaluate()方法计算表达式的值;
//统计图书总价
Console.WriteLine("Total price = {0}", nav.Evaluate("sum(bookstore/book/price)"));
四、编辑:
插入节点:先检查CanEdit属性是否为true,再使用InsertAfter()方法插入新节点。
XmlDocument doc = new XmlDocument();
doc.Load("./books.xml");
XPathNavigator nav2 = doc.CreateNavigator();
//判断是否可编辑
if (nav2.CanEdit)
{
XPathNodeIterator iter = nav2.Select("bookstore/book/price");
while (iter.MoveNext())
{
//在当前节点之后插入新节点
iter.Current.InsertAfter("<disc>5</disc>");
}
}
doc.Save("./newBooks.xml");
五、通过XPathNavigator转换为XMLReader,XMLWriter读写数据
//读:
XmlReader reader=nav.ReadSubtree();
while(reader.Read())
{Console.Write(reader.ReadOuterXml());}
//写:
XmlWriter writer=XmlWriter.Create("./1.xml");
nav.WriteSubtree(writer);
writer.Close();
35、XpathNavigator Xpath导航器 System.Xml.XPath;的更多相关文章
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...
- XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类
XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...
- Dom4j使用Xpath语法读取xml节点
我们可以使用Xpath的语法来轻易的读取xml的某个节点[类似于jQuery的选择器]: 使用Xpath语法需要添加新的jaxen-1.1-beta-7.rar 这个jar包 dom4j完整jar包我 ...
- JavaEE XML XPath
JavaEE XML XPath @author ixenos XPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!需要遍历DOM树的众多节点 ...
- 使用XPath对象解析xml文件
使用XPath对象解析xml文件 1.DocumentBuilderFactory类 工厂API,使应用程序能从XML文档获取生成DOM对象树的解析器 其构造方法受保护,用newInstance() ...
- 用DOM解析XML ,用xpath快速查询XML节点
XPath是一种快速查询xml节点和属性的一种语言,Xpath和xml的关系就像是sql语句和数据库的关系.用sql语句可以从数据库中快速查询出东西同样的用xPath也可以快速的从xml中查询出东西. ...
- PowerShell技巧:使用XPath语法查询XML文件
[TechTarget中国原创] XML是存储结构化数据的一个很好的途径,但是想要让数据在其中发挥作用又会有些困难.每一种语言都有其特定方式来查询XML文件中的命名空间.元素及属性.PowerShel ...
- java中的xpath,读取xml文档。
1,入门 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 X ...
- XML & XPath & XQuery
XML & XPath & XQuery full XPath demo https://www.w3.org/TR/xpath-full-text-30/ https://www.w ...
随机推荐
- IE的if条件判断
我们经常需要编写兼容代码,特别是万恶的IE. 特此记录下IE提供的if判断: <!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]--> < ...
- vue做的简单购物车
<code><!DOCTYPE html><html><head lang="en"> <meta charset=" ...
- ASP.Net 之委托事件
1.首先给一张图让大家了解什么是委托?它的优缺点是什么? 2.通过代码的运用更深入地了解委托事件(窗体应用程序) 1)下面我们先定义一个无参数的委托. //1.0 定义一个自定义的委托,此委托的签名是 ...
- [Linux]C语言Linux系统编程创建进程
1.进程ID 每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的. 1.1分配进程ID 缺省情况下,内核将进程ID的最大值限制为32768,可以在此处设置 ...
- 一、JDBC基础示例
一.简介 JDBC全称叫做Java database connectivity,直译为Java语言的数据库连接.它主要针对于支持结构化查询语言(SQL)的数据源,与Java程序连接并操作数据. JDB ...
- apache Header set Cache-Control
设置静态页面的缓存最大值 在.htaccess中添加下面的代码 <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$"> Hea ...
- Ubuntu重启网卡的三种方法
一.network利用root帐户# service network restart 或者/etc/init.d/networking restart 二.ifdown/ifup# ifdown et ...
- Visual studio 2013打开报异常"Exception has been thrown by the target of an invocation"
最近遇到一个问题,打开VS2013和SQL Server2014都会出报错,错误信息如下: 以前都是好好的,重启了机子也不行,能打开两个VS,再打开第三个VS还是会报错,百度无果,还是在google上 ...
- git杂记-分支简介
分支创建 //只创建分支不切换: $ git branch testing //创建并切换分支$ git checkout -b iss53 查看各个分支的指向对象 $ git log --oneli ...
- 关于 img 父容器比img图片要多4个像素的问题
问题背景: <div> <img src="" /> </div> 图片和div 的宽度相同,div的高度等于图片的高度 结果发现div的高度 ...