知识大全 如何使用 XPathNavigator 类浏览 XML

Posted

篇首语:幽映每白日,清辉照衣裳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何使用 XPathNavigator 类浏览 XML相关的知识,希望对你有一定的参考价值。

如何使用 XPathNavigator 类浏览 XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     本分步指南介绍了如何用从 XPathDocument 对象创建的 XPathNavigator 对象浏览可扩展标记语言 (XML) 文档 本示例用 XML 数据加载 XpathDocument 对象 针对该数据创建一个作为视图的 XPathNavigator 对象 并通过遍历该文档显示 XML

要求

下面的列表列出了推荐使用的硬件 软件 网络基础结构以及所需的服务包

  &# ; Microsoft Visual C# NET

本文假定您熟悉下列主题

  &# ;XML 术语

  &# ;创建和读取 XML 文件

  &# ;XML 路径语言 (XPath) 语法

如何使用 XPathNavigator 类浏览 XML

   在 Visual Studio NET 中新建一个 Visual C# NET 控制台应用程序 备注 本示例使用名为 Books xml 的文件 您可以创建自己的 Books xml 文件 也可以使用 NET 软件开发工具包 (SDK) 快速入门中包括的示例 如果您没有安装 快速入门 而且也不想安装它们 请参阅 Books xml 下载位置的 参考 部分 如果已经安装 快速入门 则 Books xml 位于以下文件夹中

\\Program Files\\Microsoft NET\\FrameworkSDK\\Samples\\Quickstart\\Howto\\Samples\\Xml\\Transformxml\\VB 必须将 Books xml 复制到 \\Bin\\Debug 文件夹 该文件夹位于您在其中创建此项目的文件夹中

   确保该项目引用 System Xml 名称空间

   在 Xml 和 XPath 名称空间上使用 using 语句 这样以后就不需要在代码中限定这些名称空间中的声明了 using 语句必须在所有其他声明之前使用 如下所示

  using System Xml; using System Xml XPath;

   声明合适的变量 声明 XPathDocument 对象以保存 XML 文档 并声明 XPathNavigator 对象以计算 XPath 表达式并遍历该文档 声明 String 对象以保存 XPath 表达式 在 Module 的 Main 过程中添加声明代码

  XPathNavigator nav; XPathDocument docNav;

   用示例文件 Books xml 加载 XPathDocument 对象 xpathdocument 类使用可扩展样式表语言转换 (XSLT) 为 XML 文档处理提供快速和面向性能的缓存 它类似于 XML 文档对象模型 (DOM) 但经过了高度优化 以用于 XSLT 处理和 XPath 数据模型

  // Open the XML docNav = new XPathDocument(@ c:\\books xml );

   从文档创建 XPathNavigator 对象 xpathnavigator 使您能够在 XML 文档中遍历属性节点和名称空间节点

  // Create a navigator to query with XPath nav = docNav CreateNavigator();

   使用 MoveToRoot 方法移至文档的根 movetoroot 将浏览器放到包含整个节点树的文档节点

  //Initial XPathNavigator to start at the root nav MoveToRoot();

   使用 MoveToFirstChild 方法移至 XML 文档的子级 movetofirstchild 方法移至当前节点的第一个子级 对于 Books xml 的源 是从根文档移至子文档 注释 部分和 Bookstore 节点

  //Move to the first child node (ment field) nav MoveToFirstChild();

   使用 MoveToNext 方法迭代通过同一层次上的节点 使用 MoveToNext 方法移至当前节点下一层次的节点

  //Loop through all of the root nodes do while (nav MoveToNext());

   使用 NodeType 属性确保您只处理元素的节点 使用 Value 属性显示元素的文本表示形式

  do //Find the first element if (nav NodeType == XPathNodeType Element) //Determine whether children exist if (nav HasChildren == true) //Move to the first child nav MoveToFirstChild(); //Loop through all the children do //Display the data Console Write( The XML string for this child ); Console WriteLine( is nav Value); while (nav MoveToNext()); while (nav MoveToNext());

   使用 HasAttributes 属性确定节点是否有任何属性 还可使用其他方法(如 MoveToNextAttribute)移至某个属性并检查它的值 请注意 该代码段只遍历根节点的子代而不是整个树

  do //Find the first element if (nav NodeType == XPathNodeType Element) //if children exist if (nav HasChildren == true) //Move to the first child nav MoveToFirstChild(); //Loop through all the children do //Display the data Console Write( The XML string for this child ); Console WriteLine( is nav Value); //Check for attributes if (nav HasAttributes == true) Console WriteLine( This node has attributes ); while (nav MoveToNext()); while (nav MoveToNext());

   使用 Console 对象的 ReadLine 方法在控制台显示的末尾添加 pause 以便更容易地显示上述结果

  //Pause Console ReadLine();

   生成并运行 Visual C# NET 项目

完整代码列表

  using System; using System Xml; using System Xml XPath; namespace q class Class static void Main(string[] args) XPathNavigator nav; XPathDocument docNav; docNav = new XPathDocument(@ c:\\books xml ); nav = docNav CreateNavigator(); nav MoveToRoot(); //Move to the first child node (ment field) nav MoveToFirstChild(); do //Find the first element if (nav NodeType == XPathNodeType Element) //Determine whether children exist if (nav HasChildren == true) //Move to the first child nav MoveToFirstChild(); //Loop through all of the children do //Display the data Console Write( The XML string for this child ); Console WriteLine( is nav Value); //Check for attributes if (nav HasAttributes == true) Console WriteLine( This node has attributes ); while (nav MoveToNext()); while (nav MoveToNext()); //Pause Console ReadLine();

疑难解答

在测试代码时 您可能会收到以下异常错误信息 An unhandled exception of type System Xml XmlException occurred in system xml dll Additional information:System error 该异常错误发生在以下代码行上

  docNav = new XPathDocument( c:\\\\books xml );

该异常错误是由无效的处理指令导致的 例如 处理指令可能包含多余的空格 下面是无效处理指令的示例

  

若要解决该异常 请执行以下操作之一 纠正无效的处理指令 下面是有效处理指令的示例 或 下面是有效处理指令的示例 从 Books xml 文件中删除 XML 处理指令 cha138/Article/program/net/201311/11778

相关参考

知识大全 用XMLTextReader类加速XML存取

用XMLTextReader类加速XML存取  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在N

知识大全 XmlSerializer序列化实体类来操作xml文件

XmlSerializer序列化实体类来操作xml文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 用IE和SQL2k开发一个XML聊天程序

用IE和SQL2k开发一个XML聊天程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不同浏览

知识大全 学习xml之给个理由先

前几天看到一篇文章其中列出了二十一世纪不会被淘汰的技术xml名列其中Framework推出也有年了Framwork中xml随处可见从普通类库到WinFormWebService再到的IDExml的身影

知识大全 完全解析浏览器挡不住的网页对话框广告

  一个强制弹出窗口的JavaScript类ForceWindow一个可以不被广告拦截器拦截的弹出窗口  ForceWindowiclassjs代码如下(使用讲解相关说明全部在注释中)

知识大全 php是什么,php文件怎么打开

  很多没有基础的朋友经常会问php文件怎么打开其实PHP是一个网页脚本但不同于xml标签语言直接可以通过浏览器打开需要有PHP的运行环境才可以访问和打开文件如果只是编辑PHP打开文件只需要用记事本或

知识大全 使用有趣的自定义标记来布局页面

  今天我们来学习如何使用有趣的自定义标记来布局页面有的朋友可能有这样的疑问自己随便定义的标记浏览器怎么能正确的认识呢?  这里我们就要用到文档的命名空间那么命名空间又是指什么?  大家知道XML有一

知识大全 XML入门教程:XML有哪些用途?

XML入门教程:XML有哪些用途?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML是被设计

知识大全 js导出格式化的excel 实例方法

最常见的方式是使用js函数操作excle文件这种方式可能因浏览器不同存在兼容性问题另一种简单方法就是导出一个excel能识别格式的xml文件用excel打开 复制代码代码如下:functio

知识大全 掌握XML实例演练ASP+XML编程

掌握XML实例演练ASP+XML编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个普通