zoukankan      html  css  js  c++  java
  • 使用 Visual C# .NET 通过 XPath 表达式查询 XML

    本文演示如何使用 XPathNavigator 类通过 XML 路径语言 (XPath) 表达式查询 XPathDocument 对象。XPath 用于以编程方式计算表达式并选择文档中的特定节点。

    回到顶端

    要求
    下面的列表列出了推荐使用的硬件、软件、网络基础结构以及所需的服务包:
    • Visual C# .NET
    本文假定您熟悉下列主题:
    • XML 术语
    • 创建和读取 XML 文件
    • XPath 语法

    回到顶端

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

      Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

      必须将该文件复制到 \Bin\Debug 文件夹,该文件夹位于您在其中创建该项目的文件夹中。

    2. 确保该项目引用 System.Xml 名称空间。
    3. Xml XPath 名称空间上使用 using 语句,这样以后就不需要在代码中限定这些名称空间中的声明了。using 语句必须在所有其他声明之前使用,如下所示:

      using System.Xml;
      using System.Xml.XPath;
    4. 声明合适的变量。声明 XPathDocument 对象以保存 XML 文档,声明 XpathNavigator 对象以计算 XPath 表达式,声明 XPathNodeIterator 对象以迭代通过选定节点。声明 String 对象以保存 XPath 表达式。在 Class1 的 Main 函数中添加声明代码。

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

      // Open the XML.
      docNav = new XPathDocument(@"c:\books.xml");
    6. 从文档创建 XPathNavigatorXPathNavigator 对象用于进行只读 XPath 查询。XPath 查询可返回结果值或许多节点。

      // Create a navigator to query with XPath.
      nav = docNav.CreateNavigator();
    7. 创建 XPath 表达式以查找图书的平均价格。这个 XPath 表达式返回单个值。有关 XPath 语法的完整详细信息,请参见"参考"部分中的"XPath 语法"。

      // Find the average cost of a book.
      // This expression uses standard XPath syntax.
      strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";
    8. 使用 XPathNavigator 对象的 Evaluate 方法计算 XPath 表达式。Evaluate 方法返回该表达式的结果。

      // Use the Evaluate method to return the evaluated expression.
      Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
    9. 创建 XPath 表达式以查找价格超过 10 美元的所有图书。这个 XPath 表达式只从 XML 源中返回 Title 节点。

      // Find the title of the books that are greater then $10.00.
      strExpression = "/bookstore/book/title[../price>10.00]";
    10. 为使用 XPathNavigator Select 方法选择的节点创建 XPathNodeIteratorXPathNodeIterator 表示 XPath 节点集,因此它支持针对该节点集执行的操作。

      // Select the node and place the results in an iterator.
      NodeIter = nav.Select(strExpression);
    11. 使用从 XPathNavigator Select 方法返回的 XPathNodeIterator 遍历选定的节点。在这种情况下,可使用 XPathNodeIterator MoveNext 方法迭代通过选定的所有节点。

      Console.WriteLine("List of expensive books:");
      //Iterate through the results showing the element value.
      while (NodeIter.MoveNext())
        {
      Console.WriteLine("Book Title:{0}", NodeIter.Current.Value);
        };
    12. 使用 ReadLine 方法在控制台显示的末尾添加 pause,以便更容易地显示上述结果。

      //Pause
      Console.ReadLine();
    13. 生成并运行您的项目。请注意,这些结果显示在控制台窗口中。

    回到顶端

  • 相关阅读:
    wayland学习笔记(八) wayland为什么要用libffi
    线程安全函数和可重入函数 辨析
    patch的基本使用
    c++ condition_variable的wait 语法糖
    系统启动知识 说道说道(一) 冰山之下
    DDR 带宽计算公式
    wayland学习笔记(七)config的结构分析
    功耗管理篇
    operator=() 重载的问题
    ABC216
  • 原文地址:https://www.cnblogs.com/timy/p/1737960.html
Copyright © 2011-2022 走看看