如何使用 XPath 運算式的 XML 查詢藉由使用 Visual C#

文章翻譯 文章翻譯
文章編號: 308333 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何使用 XPathNavigator 類別的 XML 路徑語言 (XPath) 運算式查詢 XPathDocument 物件。XPath 是以程式設計的方式用來評估運算式和選取文件中的特定節點。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Visual C#
本文假設您已熟悉下列主題:
  • XML 術語
  • 建立及讀取 XML 檔案
  • XPath 語法

如何查詢 XML 的 XPath 運算式

  1. 建立新 Visual C# 主控台應用程式在 Visual Studio 中。

    注意: 此範例使用一個名為 Books.xml 的檔案。您可以建立自己的 Books.xml 檔案,或者您可以使用範例隨附於.NET 軟體開發套件 (SDK) Quickstarts。如果您沒有安裝 Quickstarts,而且不想要將它們安裝,請參閱一 < 參考 > 節針對 [Books.xml 下載位置。如果您安裝 Quickstarts 該檔案可以找到下列資料夾中:
    程式 Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    您必須將檔案複製到 \Bin\Debug 資料夾位於以建立這個專案資料夾下。
  2. 請確定專案參考 System.Xml 命名空間。
  3. 如此一來您不需要限定在稍後的程式碼中的這些命名空間中宣告,請使用 XMLXPath 命名空間上的 使用 陳述式。您必須使用 using 陳述式到其他宣告之前,如下所示:
    using System.Xml;
    using System.Xml.XPath;
    					
  4. 將適當的變數宣告。宣告 XPathDocument 物件以保存 XML 文件、 XpathNavigator 物件用來評估 XPath 運算式和 XPathNodeIterator 物件用來逐一查看選取的節點。宣告來容納 XPath 運算式的 String 物件。在 Main 函式,在 [類別 1 中加入宣告程式碼
       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 物件的 評估 方法來評估 XPath 運算式。評估 方法會傳回運算式的結果
        // Use the Evaluate method to return the evaluated expression.
        Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. 建立 XPath 運算式,找出所有成本超過十個美元的書本。本 XPath 運算式傳回只有標題節點從 XML 來源
        // Find the title of the books that are greater then $10.00.
        strExpression = "/bookstore/book/title[../price>10.00]";
    					
  10. 建立所選取的節點的 XPathNodeIteratorXPathNavigatorSelect 方法。XPathNodeIterator 代表 XPath nodeset,因此支援此 nodeset 上的作業
        // Select the node and place the results in an iterator.
        NodeIter = nav.Select(strExpression);
  11. 使用 XPathNodeIterator,可從 Select 方法的 XPathNavigator 傳回,移動選取的節點。在這種情況下您可以在這裡使用的 XPathNodeIteratorMoveNext 方法來逐一查看所有選取的節點
      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
        Console.ReadLine();
    					
  13. 建置並執行您的專案。請注意結果會顯示在主控台視窗中。

疑難排解

當您測試程式碼時,可能會收到下列的例外狀況錯誤訊息:
System.xml.dll 中發生未處理的例外狀況的型別 'System.Xml.XmlException'

其他資訊: 系統錯誤。
下列一行程式碼就會發生這個例外狀況錯誤:
docNav = new XPathDocument("c:\\books.xml");
				
的例外狀況錯誤因不正確的處理指令。比方說處理指示可能包含多餘的空格。下列是一個無效的處理指示的範例:
<?xml version='1.0' ?>
要解決的例外狀況,執行下列之一:
  • 更正無效的處理指示。 下列是有效的處理指示的範例:
    <?xml version='1.0'?>
    OR-
  • 從 Books.xml 檔案移除 XML 處理指示。

?考

下列檔案是可以從 Microsoft 下載中心 」 下載:
摺疊此圖像展開此圖像
Download
Download Books.xml now
如需詳細資訊請造訪下列 Microsoft 網站]:
在.NET 中的 XML:.NET Framework XML 類別和 C# 提供簡單、 可擴充的資料操作
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

XPathNavigator 類別
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.aspx

XPathDocument 類別
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx

XPathNodeIterator 類別
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnodeiterator.aspx

XSLT 轉換與 XslTransform 類別
http://msdn.microsoft.com/en-us/library/47yh29a9.aspx

XPath 語法
http://msdn2.microsoft.com/en-us/library/ms763742.aspx
如需有關 XPath 的詳細資訊,請造訪下列全球資訊網協會 (W3C) 網站]:
XML 路徑語言 (XPath)
1.0 版: W3C 建議 16 十一月 1999
http://www.w3.org/TR/1999/REC-xpath-19991116

屬性

文章編號: 308333 - 上次校閱: 2008年3月13日 - 版次: 7.2
這篇文章中的資訊適用於:
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbdownload kbhowtomaster KB308333 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:308333
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com