如何使用 Visual Basic 來巡覽與 XPathNavigator 類別的 XML

文章翻譯 文章翻譯
文章編號: 301111 - 檢視此文章適用的產品。
本文曾發行於 CHT301111
本篇文章中,Microsoft Visual C# 版本請參閱 308343.
這為 Microsoft Visual Basic 6.0 版主文件編號,請參閱 271619.
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步說明如何巡覽與建立從XPathDocument物件的XPathNavigator物件的可延伸標記語言 (XML) 文件。這個範例會載入XPathDocument物件的 XML 資料、 建立XPathNavigator物件,以檢視至資料,並顯示推進的 XML整份文件。

需求

[以下概括列出建議的硬體、 軟體、 網路基礎結構,您需要的 service pack:
  • Microsoft Windows Server 2003 中,Microsoft Windows 2000專業,Windows 2000 Server、 Windows 2000 進階伺服器或 MicrosoftWindows NT 4.0 伺服器
  • Microsoft Visual Studio 2005年或 Microsoft Visual Studio.NET
這本文假設您已熟悉下列主題:
  • XML 的術語
  • 建立及讀取 XML 檔案
  • XML 路徑語言 (XPath) 語法

如何使用 XPathNavigator 類別來巡覽 XML

  1. Visual Studio 或 Visual Studio 2005年中。NET 中建立Visual Basic 2005年或 Visual Basic 的.net 主控台應用程式。

    附註這個範例會使用名為 [Books.xml 的檔案。您可以建立Books.xml 檔案,或者您可以使用隨附的範例.NET 軟體開發套件 (SDK) 快速入門。如果您擁有快速入門安裝,Books.xml 位於下列資料夾:
    \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    或者,您可以藉由造訪下列網站取得這個檔案:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms762271 (v=vs.85).aspx

    您必須複製到 Books.xml位於您建立這個資料夾下的 \Bin\Debug 資料夾專案。
  2. 請確定專案會參考命名空間。
  3. 使用XmlXPath的命名空間的Imports陳述式,以便您不需要限定宣告在 [程式碼中,稍後這些命名空間。您必須使用Imports陳述式,在任何其他宣告之前。
    Imports System.Xml
    Imports System.Xml.XPath
    					
  4. 將適當的變數宣告。XPathDocument物件來保存 XML 文件和評估 XPath 運算式,並瀏覽的XPathNavigator物件宣告文件。宣告字串物件來保存 XPath 運算式。加入宣告程式碼中在 [Module1 Main程序。
    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    					
  5. 使用範例檔 Books.xml 載入XPathDocument物件。XPathDocument類別會使用 「 可延伸樣式表語言轉換 (XSLT)若要快速且具效能為導向的快取提供 XML 文件的處理。以 XML 文件物件模型 (DOM) 的類似,但已高度最佳化用於處理 XSLT 和 XPath 資料模型。
    'Open the XML.
    docNav = New XPathDocument("books.xml")
    					
  6. 從文件中建立XPathNavigator物件。XPathNavigator可讓您以這兩個屬性節點間移動,在 XML 文件中的命名空間節點。
    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    					
  7. 使用MoveToRoot方法,以移至文件的根。MoveToRoot會將 [導覽] 設定為包含整個文件節點節點的樹狀結構。
    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    					
  8. 使用MoveToFirstChild方法而移至 XML 文件的子系。MoveToFirstChild方法會移至目前節點的第一個子系。在 [大小寫個 Books.xml 來源中,您會移開根文件中合併子系、 註解] 區段中,且書店節點。
    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    					
  9. 使用MoveToNext方法來逐一查看的同層級節點。MoveToNext方法會移至目前節點的下一個同層級。
    'Loop through all the root nodes.
    Do
        ...
    Loop While nav.MoveToNext
    					
  10. 使用 [資料類型: 字串] 屬性以確定您只處理項目] 節點中,然後使用Value屬性來顯示項目的文字表示。
    Do
        'Find the first element.
        If nav.NodeType = XPathNodeType.Element Then
    'If children exist.
    If nav.HasChildren Then
    
        '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 '{0}'", nav.Value)
    Loop While nav.MoveToNext
    
    End If
        End If
    Loop While nav.MoveToNext
    					
  11. 使用HasAttributes屬性,以判斷節點是否有任何屬性。您可以也使用其他方法,例如MoveToNextAttribute,以移至屬性,並查看它的值。請注意這程式碼片段中只有逐步解說的根節點,並不整個樹狀結構。
    Do
        'Find the first element.
        If nav.NodeType = XPathNodeType.Element Then
    'if children exist
    If nav.HasChildren Then
    
        '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 '{0}'", nav.Value)
    
    'Check for attributes.
    If nav.HasAttributes Then
        		Console.WriteLine("This node has attributes")
    End If
    Loop While nav.MoveToNext
    
    End If
        End If
    Loop While nav.MoveToNext
    					
  12. 使用ReadLine物件的方法主控台加入一段暫停結尾主控台顯示畫面的詳細資訊上述的結果,輕易地顯示。
    'Pause.
    Console.ReadLine()
    					
  13. 建置並執行主控台應用程式專案。

完整程式碼清單

Imports System.Xml
Imports System.Xml.XPath

Module Module1

    Sub Main()
        Dim nav As XPathNavigator
        Dim docNav As XPathDocument
        docNav = New XPathDocument("books.xml")
        nav = docNav.CreateNavigator
        nav.MoveToRoot()
        'Move to the first child node (comment field).
        nav.MoveToFirstChild()

        Do
            'Find the first element.
            If nav.NodeType = XPathNodeType.Element Then
                'if children exist
                If nav.HasChildren Then

                    '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 '{0}'", nav.Value)

                        'Check for attributes.
                        If nav.HasAttributes Then
                            Console.WriteLine("This node has attributes")
                        End If
                    Loop While nav.MoveToNext

                End If
            End If
        Loop While nav.MoveToNext

        'Pause.
        Console.ReadLine()

    End Sub

End Module
				

?考

針對相關資訊,請造訪下列的 Microsoft 開發人員網路 (MSDN) 網站站台:
.NET 在 XML:.NET Framework XML 類別和 C# 提供簡單、 可調整的資料操作
http://msdn.microsoft.com/msdnmag/issues/01/01/xml

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

XslTransform 類別的 XSLT 轉換
http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltransform.aspx

XPath 範例
http://msdn.microsoft.com/en-us/library/ms256086.aspx
針對相關資訊,請造訪下列全球資訊網協會 (W3C) 網站:
XML 路徑語言 (XPath)
1.0 版: W3C 建議事項 16 年 11 月1999
http://www.w3.org/TR/1999/REC-xpath-19991116

屬性

文章編號: 301111 - 上次校閱: 2012年7月5日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbvs2005applies kbvs2005swept kbdownload kbsample kbhowtomaster kbmt KB301111 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:301111
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