您目前已離線,請等候您的網際網路重新連線

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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:308333
本文章的有 Microsoft Visual Basic.NET] 版本請參閱 301220

本文參照下列 Microsoft.NET Framework 類別庫命名空間:
  • System.Xml.XPath

在此工作

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

back to the top

需求

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

如何查詢 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. 建置並執行您的專案。請注意結果會顯示在主控台視窗中。
back to the top

疑難排解

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

其他資訊: 系統錯誤。
下列一行程式碼就會發生這個例外狀況錯誤:
docNav = new XPathDocument("c:\\books.xml");				
的例外狀況錯誤因不正確的處理指令。比方說處理指示可能包含多餘的空格。下列是一個無效的處理指示的範例:
<?xml version='1.0' ?>
要解決的例外狀況,執行下列之一:
  • 更正無效的處理指示。 下列是有效的處理指示的範例:
    <?xml version='1.0'?>
    OR-
  • 從 Books.xml 檔案移除 XML 處理指示。
back to the top
参考
下列檔案是可以從 Microsoft 下載中心 」 下載:
如需詳細資訊請造訪下列 Microsoft 網站]: 如需有關 XPath 的詳細資訊,請造訪下列全球資訊網協會 (W3C) 網站]:
XML 路徑語言 (XPath)
1.0 版: W3C 建議 16 十一月 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
back to the top

警告:本文為自動翻譯

內容

文章識別碼:308333 - 最後檢閱時間:03/13/2008 20:02:27 - 修訂: 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
意見反應
0"; var Ctrl = ""; document.write("