现在XML文件的应用已经非常广泛,几乎在程序编写得过程中,都会遇到XML文件读取和写入的问题,在.net环境中,MS已经提供了非常完善的类来处理XML文件,如果没有特别大的不同,使用这个自带的类就可以完成我们一般的XML文件的读写工作。
下面我通过一个实际的例子来说明这个类的具体用法:
我们假设有如下格式的XML文件需要进行读写
<book genre="autobiography" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
</book>
我们首先来实现写XML文件的部分
我们来进行分析一下:
上面的XML文件中<book></book>部分是第一个节点我们将它当作一个Element来进行处理,<title></title>部分也可以当作一个节点也可以使用Element来进行处理,同理<author><first-name><last-name>部分都可以这样处理。而在<title></title>之间的文字我们可以把它看成一个值,就可以使用普通的string来进行处理,同理<first-name><last-name>部分也可以这样处理,现在就只剩下genre/ publicationdate /ISBN部分的分析,他们是在节点的头上出现的,用来描述这个节点的比较重要的属性的,可以把它当作对节点的说明性文字,这样我们就可以使用Attribute来描述。
通过以上的分析,我们就可以实现了这个Writer类,具体的实现如下:
Dim writer As XmlTextWriter = Nothing
Dim m_Document As String = "c:/sampledata.xml"
writer = New XmlTextWriter(m_Document, Nothing)
writer.Formatting = Formatting.Indented
writer.Indentation = 4
writer.WriteStartElement("book")
writer.WriteAttributeString("genre", "autobiography")
writer.WriteAttributeString("publicationdate", "1967")
writer.WriteAttributeString("ISBN", "0-201-63361-2")
writer.WriteStartElement("title")
writer.WriteString("The Autobiography of Benjamin Franklin")
writer.WriteEndElement()
writer.WriteStartElement("author")
writer.WriteStartElement("first-name")
writer.WriteString("Benjamin")
writer.WriteEndElement()
writer.WriteStartElement("last-name")
writer.WriteString("Franklin")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndElement()
writer.Flush()
writer.Close()
这个实现的最后的Close是非常重要,它关闭了Writer对象,同时也就将对象中的数据写道了磁盘上。
好的,我们已经可以实现了写XML文件。接下来,我们需要将我们刚才写得XML文件读出来,并且能够显示其中的各个节点和Attribute。
Dim reader As New XmlTextReader("c:/sampledata.xml")
While (reader.Read())
If (reader.IsStartElement()) Then
Console.WriteLine(reader.LocalName)
Console.WriteLine(reader.GetAttribute("genre"))
Console.WriteLine(reader.GetAttribute("publicationdate"))
Console.WriteLine(reader.GetAttribute("ISBN"))
Dim doc As New XmlDocument
doc.Load(reader)
Dim xmlnode As XmlNode = doc.SelectSingleNode("book").Item("title")
Console.WriteLine(xmlnode.Name)
Console.WriteLine(xmlnode.InnerText)
xmlnode = doc.SelectSingleNode("book").Item("author")
Dim xmlnode1 As XmlNode = xmlnode.Item("first-name")
Console.WriteLine(xmlnode1.Name)
Console.WriteLine(xmlnode1.InnerText)
Dim xmlnode2 As XmlNode = xmlnode.Item("last-name")
Console.WriteLine(xmlnode2.Name)
Console.WriteLine(xmlnode2.InnerText)
End If
End While
按照这个方法就可以将所有的数据读出来,如果修改数据的话,可以参照读取的方法进行。
参考文档 MSDN 2003
实现环境:中文 XP SP2
VS2003
FrameWork 1.1
这篇博客介绍了在VB.NET环境下如何读取和写入XML文件。通过示例代码详细展示了使用XmlTextWriter和XmlTextReader类进行XML操作的过程,包括创建XML文件、写入节点、属性以及读取节点和属性值。

136

被折叠的 条评论
为什么被折叠?



