在VB .net环境下,如何读取XML文件源代码及解析

来源:互联网 发布:linux的文件系统类型 编辑:程序博客网 时间:2024/04/30 16:47
现在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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 快手直播权限被收回怎么办 快手直播权限被收回了怎么办 腾讯手游助手玩游戏卡怎么办 电脑直播视频打不开了怎么办 平板进水开不了机怎么办 苹果平板进水开不了机怎么办 苹果平板电脑进水了怎么办 电脑换主机以前的文件怎么办 货车卖了没过户怎么办 微交易出金不了怎么办 直播时出现央视影音客户端怎么办 qq账号暂时无法登录怎么办 饿了吃东西胃疼怎么办 早上不吃饭胃疼怎么办 孕晚期胃疼呕吐怎么办 胃疼了一晚上怎么办 微信视频图像倒立怎么办 ps链接图层锁定怎么办 慕课过时间了怎么办 异地恋又要考研怎么办 阴阳师手机绑定上限了怎么办 高考口令卡丢了怎么办 网易将军令换手机了怎么办 须弥bb有弱点土怎么办 战网密码忘记了怎么办 梦三账号忘了怎么办 快手手机号被注册了怎么办 快手该手机号已注册怎么办 手机号被别人注册了快手怎么办 快手显示手机号已注册怎么办 163的邮箱忘了怎么办 河长制账号密码忘了怎么办 网易登录名忘了怎么办 网易通行证安全手机忘了怎么办 美团数据获取失败怎么办 扣扣图片加载不出来怎么办 电脑qq最小化后不见了怎么办 uwp桌面快捷图标显示异常怎么办 网易云自动切歌怎么办 捡到小米手机怎么办才能自己用 dnf启动安装程序出错怎么办