
- VB.Net 基礎教程
- VB.Net - 首頁
- VB.Net - 概述
- VB.Net - 環境設定
- VB.Net - 程式結構
- VB.Net - 基本語法
- VB.Net - 資料型別
- VB.Net - 變數
- VB.Net - 常量
- VB.Net - 修飾符
- VB.Net - 語句
- VB.Net - 指令
- VB.Net - 運算子
- VB.Net - 決策
- VB.Net - 迴圈
- VB.Net - 字串
- VB.Net - 日期和時間
- VB.Net - 陣列
- VB.Net - 集合
- VB.Net - 函式
- VB.Net - 子程式
- VB.Net - 類和物件
- VB.Net - 異常處理
- VB.Net - 檔案處理
- VB.Net - 基本控制元件
- VB.Net - 對話方塊
- VB.Net - 高階窗體
- VB.Net - 事件處理
- VB.Net 高階教程
- VB.Net - 正則表示式
- VB.Net - 資料庫訪問
- VB.Net - Excel 表格
- VB.Net - 傳送郵件
- VB.Net - XML 處理
- VB.Net - Web程式設計
- VB.Net 有用資源
- VB.Net - 快速指南
- VB.Net - 有用資源
- VB.Net - 討論
VB.Net - XML 處理
可擴充套件標記語言 (XML) 是一種標記語言,類似於 HTML 或 SGML。這是全球資訊網聯盟推薦的開放標準。
.Net Framework 中的System.Xml名稱空間包含用於處理 XML 文件的類。以下是 System.Xml 名稱空間中一些常用的類。
序號 | 類和描述 |
---|---|
1 |
XmlAttribute 表示一個屬性。屬性的有效值和預設值在文件型別定義 (DTD) 或模式中定義。 |
2 | XmlCDataSection 表示一個 CDATA 節。 |
3 | XmlCharacterData 提供文字操作方法,這些方法被多個類使用。 |
4 | XmlComment 表示 XML 註釋的內容。 |
5 | XmlConvert 編碼和解碼 XML 名稱,並提供在公共語言執行時型別和 XML 架構定義語言 (XSD) 型別之間進行轉換的方法。轉換資料型別時,返回的值與區域設定無關。 |
6 | XmlDeclaration 表示 XML 宣告節點 <?xml version='1.0'...?>。 |
7 | XmlDictionary 實現一個字典,用於最佳化 Windows 通訊基礎 (WCF) 的 XML 讀/寫器實現。 |
8 | XmlDictionaryReader 一個抽象類,Windows 通訊基礎 (WCF) 從 XmlReader 派生出來以進行序列化和反序列化。 |
9 |
XmlDictionaryWriter 表示一個抽象類,Windows 通訊基礎 (WCF) 從 XmlWriter 派生出來以進行序列化和反序列化。 |
10 | XmlDocument 表示一個 XML 文件。 |
11 | XmlDocumentFragment 表示一個輕量級物件,對於樹插入操作很有用。 |
12 | XmlDocumentType 表示文件型別宣告。 |
13 | XmlElement 表示一個元素。 |
14 | XmlEntity 表示實體宣告,例如 <!ENTITY... >。 |
15 | XmlEntityReference 表示一個實體引用節點。 |
16 | XmlException 返回關於最後一個異常的詳細資訊。 |
17 | XmlImplementation 定義一組 XmlDocument 物件的上下文。 |
18 | XmlLinkedNode 獲取緊接在此節點之前或之後的節點。 |
19 | XmlNode 表示 XML 文件中的單個節點。 |
20 | XmlNodeList 表示節點的有序集合。 |
21 | XmlNodeReader 表示一個讀取器,它提供對 XmlNode 中 XML 資料的快速、非快取的僅向前訪問。 |
22 | XmlNotation 表示符號宣告,例如 <!NOTATION... >。 |
23 | XmlParserContext 提供 XmlReader 解析 XML 片段所需的所有上下文資訊。 |
24 | XmlProcessingInstruction 表示處理指令,XML 將其定義為將處理器特定資訊儲存在文件文字中。 |
25 | XmlQualifiedName 表示一個 XML 限定名稱。 |
26 | XmlReader 表示一個讀取器,它提供對 XML 資料的快速、非快取的僅向前訪問。 |
27 | XmlReaderSettings 指定由 Create 方法建立的 XmlReader 物件上要支援的一組功能。 |
28 | XmlResolver 解析由統一資源識別符號 (URI) 命名的外部 XML 資源。 |
29 | XmlSecureResolver 透過包裝 XmlResolver 物件並限制底層 XmlResolver 可以訪問的資源來幫助保護 XmlResolver 的另一個實現。 |
30 | XmlSignificantWhitespace 表示混合內容節點中標記之間的空白或 xml:space= 'preserve' 範圍內的空白。這也被稱為重要空白。 |
31 | XmlText 表示元素或屬性的文字內容。 |
32 | XmlTextReader 表示一個讀取器,它提供對 XML 資料的快速、非快取的僅向前訪問。 |
33 | XmlTextWriter 表示一個寫入器,它提供一種快速、非快取、僅向前的方式來生成包含符合 W3C 可擴充套件標記語言 (XML) 1.0 和 XML 中的名稱空間建議的 XML 資料的流或檔案。 |
34 | XmlUrlResolver 解析由統一資源識別符號 (URI) 命名的外部 XML 資源。 |
35 | XmlWhitespace 表示元素內容中的空白。 |
36 | XmlWriter 表示一個寫入器,它提供一種快速、非快取、僅向前的方式來生成包含 XML 資料的流或檔案。 |
37 | XmlWriterSettings 指定由 XmlWriter.Create 方法建立的 XmlWriter 物件上要支援的一組功能。 |
XML 解析器 API
用於 XML 資料的兩個最基本和最廣泛使用的 API 是 SAX 和 DOM 介面。
用於 XML 的簡單 API (SAX) - 在這裡,您為感興趣的事件註冊回撥,然後讓解析器遍歷文件。當您的文件很大或您有記憶體限制時,這很有用,它在從磁碟讀取檔案時解析檔案,並且整個檔案永遠不會儲存在記憶體中。
文件物件模型 (DOM) API - 這是全球資訊網聯盟的推薦,其中整個檔案被讀入記憶體並存儲在分層(基於樹)的形式中,以表示 XML 文件的所有特徵。
在處理大型檔案時,SAX 的處理速度顯然不如 DOM 快。另一方面,僅使用 DOM 會嚴重影響您的資源,尤其是在處理大量小檔案時。
SAX 是隻讀的,而 DOM 允許更改 XML 檔案。由於這兩個不同的 API 實際上是互補的,因此沒有理由不能將它們都用於大型專案。
對於我們所有的 XML 程式碼示例,讓我們使用一個簡單的 XML 檔案 movies.xml 作為輸入 -
<?xml version = "1.0"?> <collection shelf = "New Arrivals"> <movie title = "Enemy Behind"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>Talk about a US-Japan war</description> </movie> <movie title = "Transformers"> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description> </movie> <movie title = "Trigun"> <type>Anime, Action</type> <format>DVD</format> <episodes>4</episodes> <rating>PG</rating> <stars>10</stars> <description>Vash the Stampede!</description> </movie> <movie title = "Ishtar"> <type>Comedy</type> <format>VHS</format> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom</description> </movie> </collection>
使用 SAX API 解析 XML
在 SAX 模型中,您使用XmlReader和XmlWriter類來處理 XML 資料。
XmlReader類用於以快速、僅向前且非快取的方式讀取 XML 資料。它讀取 XML 文件或流。
示例 1
此示例演示從檔案 movies.xml 讀取 XML 資料。
執行以下步驟 -
將 movies.xml 檔案新增到應用程式的 bin\Debug 資料夾中。
在 Form1.vb 檔案中匯入 System.Xml 名稱空間。
在窗體中新增一個標籤,並將文字更改為“電影多多”。
新增三個列表框和三個按鈕,以顯示來自 xml 檔案的電影標題、型別和描述。
使用程式碼編輯器視窗新增以下程式碼。
Imports System.Xml Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Set the caption bar text of the form. Me.Text = "tutorialspoint.com" End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListBox1().Items.Clear() Dim xr As XmlReader = XmlReader.Create("movies.xml") Do While xr.Read() If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "movie" Then ListBox1.Items.Add(xr.GetAttribute(0)) End If Loop End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click ListBox2().Items.Clear() Dim xr As XmlReader = XmlReader.Create("movies.xml") Do While xr.Read() If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "type" Then ListBox2.Items.Add(xr.ReadElementString) Else xr.Read() End If Loop End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click ListBox3().Items.Clear() Dim xr As XmlReader = XmlReader.Create("movies.xml") Do While xr.Read() If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "description" Then ListBox3.Items.Add(xr.ReadElementString) Else xr.Read() End If Loop End Sub End Class
使用 Microsoft Visual Studio 工具欄上的啟動按鈕執行並執行以上程式碼。單擊按鈕將顯示來自檔案電影的標題、型別和描述。

XmlWriter類用於將 XML 資料寫入流、檔案或 TextWriter 物件。它也以僅向前、非快取的方式工作。
示例 2
讓我們透過在執行時新增一些資料來建立一個 XML 檔案。執行以下步驟 -
在窗體中新增一個 WebBrowser 控制元件和一個按鈕控制元件。
將按鈕的 Text 屬性更改為“顯示作者檔案”。
在程式碼編輯器中新增以下程式碼。
Imports System.Xml Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Set the caption bar text of the form. Me.Text = "tutorialspoint.com" End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim xws As XmlWriterSettings = New XmlWriterSettings() xws.Indent = True xws.NewLineOnAttributes = True Dim xw As XmlWriter = XmlWriter.Create("authors.xml", xws) xw.WriteStartDocument() xw.WriteStartElement("Authors") xw.WriteStartElement("author") xw.WriteAttributeString("code", "1") xw.WriteElementString("fname", "Zara") xw.WriteElementString("lname", "Ali") xw.WriteEndElement() xw.WriteStartElement("author") xw.WriteAttributeString("code", "2") xw.WriteElementString("fname", "Priya") xw.WriteElementString("lname", "Sharma") xw.WriteEndElement() xw.WriteStartElement("author") xw.WriteAttributeString("code", "3") xw.WriteElementString("fname", "Anshuman") xw.WriteElementString("lname", "Mohan") xw.WriteEndElement() xw.WriteStartElement("author") xw.WriteAttributeString("code", "4") xw.WriteElementString("fname", "Bibhuti") xw.WriteElementString("lname", "Banerjee") xw.WriteEndElement() xw.WriteStartElement("author") xw.WriteAttributeString("code", "5") xw.WriteElementString("fname", "Riyan") xw.WriteElementString("lname", "Sengupta") xw.WriteEndElement() xw.WriteEndElement() xw.WriteEndDocument() xw.Flush() xw.Close() WebBrowser1.Url = New Uri(AppDomain.CurrentDomain.BaseDirectory + "authors.xml") End Sub End Class
使用 Microsoft Visual Studio 工具欄上的啟動按鈕執行並執行以上程式碼。單擊“顯示作者檔案”將顯示在 Web 瀏覽器上新建立的 authors.xml 檔案。

使用 DOM API 解析 XML
根據文件物件模型 (DOM),XML 文件由節點和節點的屬性組成。XmlDocument類用於實現 .Net Framework 的 XML DOM 解析器。它還允許您透過插入、刪除或更新文件中的資料來修改現有的 XML 文件。
以下是XmlDocument類中一些常用的方法 -
序號 | 方法名稱和描述 |
---|---|
1 |
AppendChild 將指定的節點新增到此節點的子節點列表的末尾。 |
2 |
CreateAttribute(String) 建立一個具有指定名稱的 XmlAttribute。 |
3 |
CreateComment 建立一個包含指定資料的 XmlComment。 |
4 |
CreateDefaultAttribute 建立一個具有指定字首、本地名稱和名稱空間 URI 的預設屬性。 |
5 |
CreateElement(String) 建立一個具有指定名稱的元素。 |
6 |
CreateNode(String, String, String) 建立一個具有指定節點型別、名稱和 NamespaceURI 的 XmlNode。 |
7 |
CreateNode(XmlNodeType, String, String) 建立一個具有指定 XmlNodeType、名稱和 NamespaceURI 的 XmlNode。 |
8 |
CreateNode(XmlNodeType, String, String, String) 建立一個具有指定 XmlNodeType、字首、名稱和 NamespaceURI 的 XmlNode。 |
9 |
CreateProcessingInstruction 建立一個具有指定名稱和資料的 XmlProcessingInstruction。 |
10 |
CreateSignificantWhitespace 建立一個 XmlSignificantWhitespace 節點。 |
11 |
CreateTextNode 建立一個具有指定文字的 XmlText。 |
12 |
CreateWhitespace 建立一個 XmlWhitespace 節點。 |
13 |
CreateXmlDeclaration 建立一個具有指定值的 XmlDeclaration 節點。 |
14 |
GetElementById 獲取具有指定 ID 的 XmlElement。 |
15 |
GetElementsByTagName(String) 返回一個 XmlNodeList,其中包含與指定名稱匹配的所有後代元素的列表。 |
16 |
GetElementsByTagName(String, String) 返回一個 XmlNodeList,其中包含與指定的 LocalName 和 NamespaceURI 匹配的所有後代元素的列表。 |
17 |
InsertAfter 將指定的節點插入到指定的參考節點之後。 |
18 |
InsertBefore 將指定的節點插入到指定的參考節點之前。 |
19 |
Load(Stream) 從指定的流載入 XML 文件。 |
20 |
Load(String) 從指定的 URL 載入 XML 文件。 |
21 |
Load(TextReader) 從指定的 TextReader 載入 XML 文件。 |
22 |
Load(XmlReader) 從指定的 XmlReader 載入 XML 文件。 |
23 |
LoadXml 從指定的字串載入 XML 文件。 |
24 |
PrependChild 將指定的節點新增到此節點的子節點列表的開頭。 |
25 |
ReadNode 基於 XmlReader 中的資訊建立一個 XmlNode 物件。讀取器必須定位在節點或屬性上。 |
26 |
RemoveAll 刪除當前節點的所有子節點和/或屬性。 |
27 |
RemoveChild 刪除指定的子節點。 |
28 |
ReplaceChild 用 newChild 節點替換子節點 oldChild。 |
29 |
Save(Stream) 將 XML 文件儲存到指定的流。 |
30 |
Save(String) 將 XML 文件儲存到指定的檔案。 |
31 |
Save(TextWriter) 將 XML 文件儲存到指定的 TextWriter。 |
32 |
Save(XmlWriter) 將 XML 文件儲存到指定的 XmlWriter。 |
示例 3
在此示例中,讓我們在 xml 文件 authors.xml 中插入一些新節點,然後在列表框中顯示所有作者的姓。
執行以下步驟 -
將 authors.xml 檔案新增到應用程式的 bin/Debug 資料夾中(如果您嘗試過上一個示例,則該檔案應該已經存在)。
匯入 System.Xml 名稱空間。
在窗體中新增一個列表框和一個按鈕控制元件,並將按鈕控制元件的 Text 屬性設定為“顯示作者”。
使用程式碼編輯器新增以下程式碼。
Imports System.Xml Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Set the caption bar text of the form. Me.Text = "tutorialspoint.com" End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListBox1.Items.Clear() Dim xd As XmlDocument = New XmlDocument() xd.Load("authors.xml") Dim newAuthor As XmlElement = xd.CreateElement("author") newAuthor.SetAttribute("code", "6") Dim fn As XmlElement = xd.CreateElement("fname") fn.InnerText = "Bikram" newAuthor.AppendChild(fn) Dim ln As XmlElement = xd.CreateElement("lname") ln.InnerText = "Seth" newAuthor.AppendChild(ln) xd.DocumentElement.AppendChild(newAuthor) Dim tr As XmlTextWriter = New XmlTextWriter("movies.xml", Nothing) tr.Formatting = Formatting.Indented xd.WriteContentTo(tr) tr.Close() Dim nl As XmlNodeList = xd.GetElementsByTagName("fname") For Each node As XmlNode In nl ListBox1.Items.Add(node.InnerText) Next node End Sub End Class
使用 Microsoft Visual Studio 工具欄中的啟動按鈕執行並執行以上程式碼。單擊“顯示作者”按鈕將顯示所有作者(包括我們在執行時新增的作者)的姓名。
