VB.Net-XML处理
可扩展标记语言(XML)是一种非常通用的HTML或SGML的标记语言。这是全球联盟推荐的,可作为开放标准。.Net
框架中的System.Xml命名空间包含用于处理XML文档的类。 。以下是System.Xml命名空间中常用的一些类。
SN |
类 |
描述 |
1 |
XmlAttribute |
表示属性。属性的有效值和替换值在文档类型定义(DTD)或模式中定义。 |
2 |
XmlCDataSection |
表示一个CDATA部分。 |
3 |
XmlCharacterData |
提供由几个类使用的文本处理方法。 |
4 |
XML评论 |
表示一个XML注释的内容。 |
5 |
XmlConvert |
对XML名称进行编码和解码,并在公共语言运行时类型和XML模式定义语言(XSD)类型之间进行转换的方法。转换数据类型时,返回的值与语言环境无关。 |
6 |
Xml声明 |
表示XML声明摘要<?xml版本='1.0'...?>。 |
7 |
XmlDictionary |
实现一本。字典搜索用来优化的Windows 通信基础 (WCF)的XML 读取器/编写器实现。 |
8 |
XmlDictionaryReader |
Windows Communication Foundation(WCF)从XmlReader派生来进行序列化和反序列化的抽象类。 |
9 |
XmlDictionaryWriter |
表示Windows Communication Foundation(WCF)从XmlWriter派生来进行序列化和反序列化的抽象类。 |
10 |
XmlDocument |
表示XML文档。 |
11 |
XmlDocumentFragment |
表示对树插入操作有用的轻量级对象。 |
12 |
XmlDocumentType |
表示文档类型声明。 |
13 |
XmlElement |
表示一个元素。 |
14 |
XmlEntity |
表示一个实体声明,如<!ENTITY ...>。 |
15 |
XmlEntityReference |
表示一个实体引用引用。 |
16 |
XmlException |
返回有关最后一个异常的详细信息。 |
17 |
Xml实施 |
定义一个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 |
Xml空白 |
代表元素内容中的空白。 |
36 |
XmlWriter |
表示提供快速,非缓存,仅转发方式生成包含XML数据的流或文件的写入程序。 |
37 |
XmlWriterSettings |
指定一组要在XmlWriter.Create方法创建的XmlWriter对象上支持的要素。 |
XML解析器的API
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>
解析XML使用SAX API
在SAX模型中,使用XmlReader和XmlWriter类来处理XML数据
。XmlReader类用于以快速,仅向前和非缓存方式读取XML数据。它读取XML文档或流。
示例1
此示例演示从文件movies.xml中读取XML数据。
执行以下步骤:
将movies.xml文件添加到应用程序的bin \调试文件夹中。
在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
XmlDocument类用于实现.Net框架的XML DOM解析器。并且允许您通过插入,删除或更新文档中的数据来修改现有的文档。的XML文档。
以下是XmlDocument类的一些常用方法:
SN |
方法名称 |
说明 |
1 |
AppendChild |
将指定的补充添加到此下游的子节点列表的末尾。 |
2 |
CreateAttribute(字符串) |
使用指定的名称创建XmlAttribute。 |
3 |
创建评论 |
创建包含指定数据的XmlComment。 |
4 |
CreateDefaultAttribute |
创建具有指定前缀,本地名称和命名空间URI的属性。 |
5 |
CreateElement(字符串) |
创建具有指定名称的元素。 |
6 |
CreateNode(字符串,字符串,字符串) |
创建具有指定摘要类型,名称和名称空间URI的XmlNode。 |
7 |
CreateNode(XmlNodeType,字符串,字符串) |
创建具有指定的XmlNodeType,名称和名称空间URI的XmlNode。 |
8 |
CreateNode(XmlNodeType,字符串,字符串,字符串) |
创建具有指定的XmlNodeType,前缀,名称和NamespaceURI的XmlNode。 |
9 |
CreateProcessingInstruction |
创建具有指定名称和数据的XmlProcessingInstruction。 |
10 |
CreateSignificantWhitespace |
创建一个XmlSignificantWhitespace中断。 |
11 |
createTextNode |
创建具有指定文本的XMLTEXT。 |
12 |
创建空白 |
创建一个XmlWhitespace推理。 |
13 |
CreateXmlDeclaration |
创建一个具有指定值的XmlDeclaration中断。 |
14 |
GetElementById |
获取具有指定ID的XmlElement。 |
15 |
GetElementsByTagName(String) |
返回一个包含与指定名称匹配的所有后代元素的列表的XmlNodeList。 |
16 |
GetElementsByTagName(字符串,字符串) |
返回一个包含与指定名称匹配的所有后代元素的列表的XmlNodeList。 |
17 |
插入后 |
在指定的引用摘要之后立即插入指定的摘要。 |
18 |
插入前 |
在指定的引用摘要之前插入指定的摘要。 |
19 |
负载(流) |
从指定的流装载XML文档。 |
20 |
负载(字符串) |
从指定的TextReader加载XML文档。 |
21 |
加载(TextReader) |
从指定的TextReader加载XML文档。 |
22 |
加载(XmlReader) |
从指定的XmlReader加载XML文档。 |
23 |
加载Xml |
从指定的字符串加载XML文档。 |
24 |
PrependChild |
将指定的补充添加到此下游的子节点列表的开头。 |
25 |
读节点 |
基于XmlReader中的信息创建XmlNode对象。读取器必须位于例程或属性上。 |
26 |
移除所有 |
删除当前例程的所有子例程和/或属性。 |
27 |
RemoveChild |
删除指定的子例程。 |
28 |
ReplaceChild |
将子例程oldChild替换为newChild例程。 |
29 |
保存(流) |
保存XML文档到指定的流。 |
30 |
保存(字符串) |
将XML文档保存到指定的文件。 |
31 |
保存(TextWriter) |
将XML文档保存到指定的TextWriter。 |
32 |
保存(XmlWriter) |
将XML文档保存到指定的XmlWriter。 |
示例3
在本示例中,让我们在xml文档authors.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工具栏上的“开始”按钮执行并运行上述代码。 单击“显示作者”按钮将显示所有作者的名字,包括我们在运行时添加的作者。