 
- 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 - 网页编程
- VB.Net 有用资源
- VB.Net - 快速指南
- VB.Net - 有用的资源
- VB.Net - 讨论
VB.Net - XML 处理
可扩展标记语言 (XML) 是一种非常类似于 HTML 或 SGML 的标记语言。这是由万维网联盟推荐并作为开放标准提供的。
.Net Framework 中的 System.Xml 命名空间包含用于处理 XML 文档的类。以下是 System.Xml 命名空间中的一些常用类。
| 先生。 | 类别和描述 | 
|---|---|
| 1 | Xml属性 代表一个属性。属性的有效值和默认值在文档类型定义 (DTD) 或架构中定义。 | 
| 2 | XmlC数据节 代表 CDATA 部分。 | 
| 3 | Xml字符数据 提供多个类使用的文本操作方法。 | 
| 4 | Xml注释 表示 XML 注释的内容。 | 
| 5 | Xml转换 对 XML 名称进行编码和解码,并提供在公共语言运行时类型和 XML 架构定义语言 (XSD) 类型之间进行转换的方法。转换数据类型时,返回的值与区域设置无关。 | 
| 6 | Xml声明 表示 XML 声明节点 <?xml version='1.0'...?>。 | 
| 7 | Xml字典 实现用于优化 Windows Communication Foundation (WCF) 的 XML 读取器/编写器实现的字典。 | 
| 8 | XmlDictionaryReader Windows Communication Foundation (WCF) 从 XmlReader 派生的抽象类,用于执行序列化和反序列化。 | 
| 9 | XmlDictionaryWriter 表示 Windows Communication Foundation (WCF) 从 XmlWriter 派生的抽象类,用于执行序列化和反序列化。 | 
| 10 | Xml文档 代表一个 XML 文档。 | 
| 11 | Xml文档片段 表示对树插入操作有用的轻量级对象。 | 
| 12 | Xml文档类型 表示文档类型声明。 | 
| 13 | Xml元素 代表一个元素。 | 
| 14 | Xml实体 表示实体声明,例如<!ENTITY...>。 | 
| 15 | XmlEntityReference 代表实体参考节点。 | 
| 16 | XML异常 返回有关最后一个异常的详细信息。 | 
| 17 号 | Xml实现 定义一组 XmlDocument 对象的上下文。 | 
| 18 | Xml链接节点 获取紧邻该节点之前或之后的节点。 | 
| 19 | Xml节点 表示 XML 文档中的单个节点。 | 
| 20 | Xml节点列表 表示节点的有序集合。 | 
| 21 | XmlNodeReader 表示一个读取器,它提供对 XmlNode 中 XML 数据的快速、非缓存的仅向前访问。 | 
| 22 | Xml符号 表示符号声明,例如 <!NOTATION... >。 | 
| 23 | XmlParserContext 提供 XmlReader 解析 XML 片段所需的所有上下文信息。 | 
| 24 | Xml处理指令 表示一条处理指令,XML 定义该指令以将特定于处理器的信息保留在文档文本中。 | 
| 25 | Xml限定名称 表示 XML 限定名称。 | 
| 26 | Xml阅读器 表示提供对 XML 数据的快速、非缓存、只进访问的读取器。 | 
| 27 | XmlReader设置 指定由 Create 方法创建的 XmlReader 对象支持的一组功能。 | 
| 28 | Xml解析器 解析由统一资源标识符 (URI) 命名的外部 XML 资源。 | 
| 29 | Xml安全解析器 通过包装 XmlResolver 对象并限制基础 XmlResolver 有权访问的资源,帮助保护 XmlResolver 的另一个实现。 | 
| 30 | Xml重要空白 表示混合内容节点中标记之间的空白或 xml:space= 'preserve' 范围内的空白。这也称为重要空白。 | 
| 31 | Xml文本 表示元素或属性的文本内容。 | 
| 32 | Xml文本阅读器 表示提供对 XML 数据的快速、非缓存、只进访问的读取器。 | 
| 33 | XmlTextWriter 表示一个编写器,它提供一种快速、非缓存、只进的方式来生成包含 XML 数据的流或文件,这些数据符合 W3C 可扩展标记语言 (XML) 1.0 和 XML 中的命名空间建议。 | 
| 34 | XmlUrl解析器 解析由统一资源标识符 (URI) 命名的外部 XML 资源。 | 
| 35 | Xml空白 表示元素内容中的空白。 | 
| 36 | XmlWriter 表示一个编写器,它提供一种快速、非缓存、只进的方法来生成包含 XML 数据的流或文件。 | 
| 37 | XmlWriter设置 指定由 XmlWriter.Create 方法创建的 XmlWriter 对象支持的一组功能。 | 
XML 解析器 API
XML 数据的两个最基本且使用最广泛的 API 是 SAX 和 DOM 接口。
- Simple API for XML (SAX) - 在这里,您注册感兴趣事件的回调,然后让解析器继续处理文档。当您的文档很大或有内存限制时,这非常有用,它会在从磁盘读取文件时解析文件,并且整个文件永远不会存储在内存中。 
- 文档对象模型 (DOM) API - 这是万维网联盟的建议,其中整个文件被读入内存并以分层(基于树)的形式存储以表示 XML 文档的所有功能。 
在处理大文件时,SAX 显然无法像 DOM 那样快地处理信息。另一方面,专门使用 DOM 确实会浪费你的资源,尤其是在大量小文件上使用时。
SAX 是只读的,而 DOM 允许更改 XML 文件。由于这两个不同的 API 实际上是相互补充的,因此您没有理由不能将它们同时用于大型项目。
对于我们所有的 XML 代码示例,让我们使用一个简单的 XML 文件 movie.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 数据。
采取以下步骤 -
- 将 movie.xml 文件添加到应用程序的 bin\Debug 文件夹中。 
- 在 Form1.vb 文件中导入 System.Xml 命名空间。 
- 在表单中添加标签并将其文本更改为“Movies Galore”。 
- 添加三个列表框和三个按钮以显示 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 控件和一个按钮控件。 
- 将按钮的文本属性更改为显示作者文件。 
- 在代码编辑器中添加以下代码。 
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 | 附加子项 将指定节点添加到该节点的子节点列表的末尾。 | 
| 2 | 创建属性(字符串) 创建具有指定名称的 XmlAttribute。 | 
| 3 | 创建评论 创建包含指定数据的 XmlComment。 | 
| 4 | 创建默认属性 使用指定的前缀、本地名称和命名空间 URI 创建默认属性。 | 
| 5 | 创建元素(字符串) 创建具有指定名称的元素。 | 
| 6 | 创建节点(字符串,字符串,字符串) 创建具有指定节点类型、Name 和 NamespaceURI 的 XmlNode。 | 
| 7 | CreateNode(XmlNodeType, 字符串, 字符串) 使用指定的 XmlNodeType、Name 和 NamespaceURI 创建 XmlNode。 | 
| 8 | CreateNode(XmlNodeType, 字符串, 字符串, 字符串) 使用指定的 XmlNodeType、Prefix、Name 和 NamespaceURI 创建 XmlNode。 | 
| 9 | 创建处理指令 创建具有指定名称和数据的 XmlProcessingInstruction。 | 
| 10 | 创建重要空白 创建 XmlSignificantWhitespace 节点。 | 
| 11 | 创建文本节点 创建具有指定文本的 XmlText。 | 
| 12 | 创建空白 创建 XmlWhitespace 节点。 | 
| 13 | 创建Xml声明 创建具有指定值的 XmlDeclaration 节点。 | 
| 14 | 按 ID 获取元素 获取具有指定 ID 的 XmlElement。 | 
| 15 | 按标签名称获取元素(字符串) 返回一个 XmlNodeList,其中包含与指定名称匹配的所有后代元素的列表。 | 
| 16 | 按标签名称获取元素(字符串,字符串) 返回一个 XmlNodeList,其中包含与指定的 LocalName 和 NamespaceURI 匹配的所有后代元素的列表。 | 
| 17 号 | 之后插入 将指定的节点插入到指定的引用节点之后。 | 
| 18 | 插入之前 将指定的节点插入到指定的引用节点之前。 | 
| 19 | 负载(流) 从指定的流加载 XML 文档。 | 
| 20 | 负载(字符串) 从指定的 URL 加载 XML 文档。 | 
| 21 | 加载(文本阅读器) 从指定的 TextReader 加载 XML 文档。 | 
| 22 | 加载(XmlReader) 从指定的 XmlReader 加载 XML 文档。 | 
| 23 | 加载Xml 从指定的字符串加载 XML 文档。 | 
| 24 | 前置子项 将指定节点添加到该节点的子节点列表的开头。 | 
| 25 | 读节点 根据 XmlReader 中的信息创建 XmlNode 对象。读取器必须位于节点或属性上。 | 
| 26 | 移除所有 删除当前节点的所有子节点和/或属性。 | 
| 27 | 删除子项 删除指定的子节点。 | 
| 28 | 替换子项 将子节点 oldChild 替换为 newChild 节点。 | 
| 29 | 保存(流) 将 XML 文档保存到指定的流。 | 
| 30 | 保存(字符串) 将 XML 文档保存到指定文件。 | 
| 31 | 保存(文本编写器) 将 XML 文档保存到指定的 TextWriter。 | 
| 32 | 保存(XmlWriter) 将 XML 文档保存到指定的 XmlWriter。 | 
实施例3
在此示例中,让我们在 xml 文档authors.xml 中插入一些新节点,然后在列表框中显示所有作者的名字。
采取以下步骤 -
- 在应用程序的 bin/Debug 文件夹中添加authors.xml 文件(如果您尝试过最后一个示例,它应该在那里) 
- 导入 System.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 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 工具栏上的“开始”按钮执行并运行上述代码。单击“显示作者”按钮将显示所有作者的名字,包括我们在运行时添加的作者。 
