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

如何: 使用 System.Xml.XPath 類別來執行 XPath 查詢

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

按一下這裡查看此文章的英文版本:317069
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將逐步告訴您,如何使用類別 System.Xml.XPath 命名空間中,在.NET 應用程式中執行 XPath 查詢。

back to the top

探索 System.Xml.XPath 命名空間

System.Xml.XPath 命名空間包含 XPath 剖析器和評估引擎的.NET Framework。System.Xml.XPath 命名空間支援全球資訊網協會 (W3C) XML 路徑語言 (XPath) 1.0 版建議事項。如需有關 XPath 建議事項的詳細資訊,請造訪下列 W3C 網站: System.Xml.XPath 命名空間也包含下列類別,來執行 XPath 查詢,並以程式設計方式巡覽產生的 resultsets 最佳化:
  • XPathDocument: A 高效能讀取-只快取處理的 XML 文件和資料流。「 可延伸樣式表語言轉換 (XSLT) 處理,以及 XPath 資料模型,被最佳化 XPathDocumentXPathDocument 使用文件物件模型 (DOM)-根據剖析的模型 (載入到記憶體中樹狀結構的來源 XML),但是未實作必要的插入、 修改,或刪除 「 可延伸標記語言 」 (XML) 文件或資料流中的節點介面。
  • XPathNavigator: 本等級根據 XPath 資料模型。XPathNavigator 提供必要的方法,讓您執行針對 XPathDocument 會被載入的 XML 資料的 XPath 查詢。XPathNavigator 時請使用 XPathDocument 物件 CreateNavigator 方法具現化。您也可以使用 XPathNavigator 編譯經常執行的 XPath 查詢運算式,並產生 System.Xml.XPath.XPathExpression 物件,封裝已編譯的查詢。
  • XPathNodeIterator: 提供一個順向的-唯一,讀取-唯一 Iterator。使用 Select 方法 XPathNavigator 物件的執行 XPath 查詢時將建立 XPathNodeIterator 的執行個體。您可以使用 XPathNodeIterator 巡覽 XPath 查詢所產生的結果集。
  • XPathExpression: 封裝已編譯的 XPath 查詢運算式。您可以執行查詢運算式之前,您必須編譯的 XPath 查詢運算式。已編譯的 XPath 運算式包含被確認符合 W3C XPath 查詢語言規格的語法。編譯 方法 XPathNavigator 物件的呼叫會傳回 XPathExpression 類別。通常,您可以使用 XPathExpression 提供一個 XPathNavigator 物件的 Select 方法呼叫中先行編譯的 XPath 查詢運算式。
  • XPathException: [.NET Framework 例外狀況處理的 XPath 查詢運算式時,發生錯誤時產生的。Select 方法和 編譯XPathNavigator 類別方法可以引發 XPathException
back to the top

建立範例的 XML 文件

若要建立後續的.NET 程式碼範例使用兩個範例的 XML 文件,請依照下列步驟執行:
  1. 使用記事本] 或 [相似的文字編輯器],在新的 XML 文件上貼上下列程式碼命名 Books.xml。將文件儲存在硬碟上根資料夾
    <?xml version='1.0'?><Books><Book>  <Title>Beginning XML</Title>  <Publisher>Wrox</Publisher></Book><Book>  <Title>XML Step by Step</Title>  <Publisher>MSPress</Publisher></Book><Book>  <Title>Professional XML</Title>  <Publisher>Wrox</Publisher></Book><Book>  <Title>Developing XML solutions</Title>  <Publisher>MSPress</Publisher></Book></Books>					
  2. 使用記事本] 或 [相似的文字編輯器],在新的 XML 文件上貼上下列程式碼命名 DotNetBooks.xml。將文件儲存在硬碟上根資料夾
    <?xml version='1.0'?><DotNetBooks><DotNetBook>  <Title>Professional C#</Title>  <Publisher>Wrox</Publisher></DotNetBook><DotNetBook>  <Title>ADO.Net Core Reference</Title>  <Publisher>MSPress</Publisher></DotNetBook><DotNetBook>  <Title>Professional VB.Net</Title>  <Publisher>Wrox</Publisher></DotNetBook><DotNetBook>  <Title>Inside C#</Title>  <Publisher>MSPress</Publisher></DotNetBook></DotNetBooks>
back to the top

建立 Visual Basic.NET 專案

  1. 啟動 Visual 的 Studio.NET,然後建立新的 Visual Basic.NET Windows 應用程式專案。
  2. 從工具箱拖曳兩個 按鈕 控制項至 Form1.vb。
  3. 將下列程式碼貼在 Click_Event 程序中的第一個指令按鈕:
    'Instantiate the XPathDocument class.Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")'Instantiate the XPathNavigator class.Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()'Instantiate the XPathIterator class.Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")'Use the XPathIterator class to navigate through the generated resultset'and then display the selected Titles.Do While iterator.MoveNext    System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop					
  4. 閱讀內嵌註解,以瞭解程式碼的功能。注意特定程式碼如何執行個體化並使用的每個類別的物件執行個體 System.Xml.XPath 命名空間中。請注意一個字串對 SelectXPathNavigator 物件的方法呼叫中指定 XPath 查詢運算式的參數。
  5. 將下列程式碼貼在 Click_Event 程序中的第二個指令按鈕:
    'Construct the XPathDocument by specifying the path to Books.xml.Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")'Create the XPathNavigator.Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()'Compile the XPath query expression to identify all MSPress Titles.'The Compile method of the XPathNavigator generates an XPathExpression object'that encapsulates the compiled query expression.Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.'Note that the sample code supplies the XPathExpression object as the query expression parameter.Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")System.Diagnostics.Debug.WriteLine("******************************")'Use the iterator to navigate the generated resultset.Do While iterator.MoveNext    System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop'Release the XPathDocument and XPathNavigator.xmldoc = Nothingnav = NothingSystem.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")System.Diagnostics.Debug.WriteLine("******************************")'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")'Create the XPathNavigator.nav = xmldoc.CreateNavigator()'Reuse the XPathExpression that you compiled previously to locate'all MSPress titles in DotNetBooks.xml.'You can reuse the XPathExpression because the hierarchy of elements that are referenced'in the XPath query is the same in Books.xml and DotNetBooks.xml. 'For example, the Publisher element is a child of the Title element in both XML documents.'The hierarchy must be identical for you to reuse the same XPathExpression object'across different XML documents/streams.'When you use an XPathExpression object, and the Select method executes,'the XPath query is not recompiled. iterator = nav.Select(expr)'Use the iterator to navigate the generated resultset.Do While iterator.MoveNext     System.Diagnostics.Debug.WriteLine(iterator.Current.Value)Loop					
  6. 閱讀內嵌註解,以瞭解程式碼的功能。注意特定範例程式碼如何執行個體化 XPathExpression 物件第一次 (針對 Books.xml) 並然後會當 XPath 查詢執行 (針對 DotNetBooks.xml) 第二次重複使用該物件。
back to the top

測試專案

  1. 將變更儲存至 Visual Basic.NET 的專案,然後執行專案。
  2. 表單時按一下 [第一個指令按鈕,執行會使用字串來指定 XPath 查詢運算式的程式碼]。指定 XPath 查詢對照 Books.xml 輸出會顯示如下:
    XML Step by StepDeveloping XML solutions					
  3. 按一下第二個命令按鈕,執行會使用 XPathExpression 物件來指定 XPath 查詢運算式的程式碼。對抗 Books.xml 和 DotNetBooks.xml 指定的 XPath 查詢的輸出會顯示如下:
    MSPress titles in books.xml...******************************XML Step by StepDeveloping XML solutionsMSPress titles in DotNetBooks.xml...******************************ADO.Net Core ReferenceInside C#					
back to the top

警告:本文為自動翻譯

內容

文章識別碼:317069 - 最後檢閱時間:12/07/2015 08:48:38 - 修訂: 4.2

Microsoft .NET Framework 1.1, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft .NET Framework 1.0

  • kbnosurvey kbarchive kbmt kbhowtomaster KB317069 KbMtzh
意見反應