加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net 教程 4-10 XML文件操作 1

发布时间:2020-12-16 23:52:31 所属栏目:大数据 来源:网络整理
导读:XML(EXtensible Markup Language):可扩展标记语言目前被广泛的运用,本大节讨论如何操作xml文件。 关于Xml语法结构,请自行查找相关资料。 本大节使用到的Xml文件为 books.xml: ?xml version="1.0" encoding="UTF-8"?BookStore Book ISBN="9787302424260"

XML(EXtensible Markup Language):可扩展标记语言目前被广泛的运用,本大节讨论如何操作xml文件。

关于Xml语法结构,请自行查找相关资料。

本大节使用到的Xml文件为 books.xml:

<?xml version="1.0" encoding="UTF-8"?>
<BookStore>
  <Book ISBN="9787302424260">
    <TITLE>星球大战:幽灵的威胁</TITLE>
    <AUTHOR>特里·布鲁克斯</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>48.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787302425274">
    <TITLE>星球大战:克隆人的进攻</TITLE>
    <AUTHOR>R. A. 萨尔瓦多</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>48.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787302426899">
    <TITLE>星球大战:西斯的复仇</TITLE>
    <AUTHOR>马修·斯托弗</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>58.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787302421146">
    <TITLE>星球大战:新的希望</TITLE>
    <AUTHOR>乔治·卢卡斯</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>35.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787302421122">
    <TITLE>星球大战:帝国反击战</TITLE>
    <AUTHOR>唐纳德·F.格卢特</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>35.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787302421108">
    <TITLE>星球大战:绝地归来</TITLE>
    <AUTHOR>詹姆斯·卡恩</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>35.00</PRICE>
    <YEAR>1985</YEAR>
  </Book>
  <Book ISBN="9787562849896">
    <TITLE>星球大战:原力觉醒</TITLE>
    <AUTHOR>迪士尼公司</AUTHOR>
    <COUNTRY>美国</COUNTRY>
    <PRICE>48.00</PRICE>
    <YEAR>2016</YEAR>
  </Book>
</BookStore>

主窗体设计界面:

先看看如何载入并显示xml中的数据:

添加对XML命名空间的引用:

Imports System.Xml
定义一个窗体级变量:
Dim xmlDoc As XmlDocument

使用xmlDocument.Load直接载入xml文件:
Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
        xmlDoc = New XmlDocument()
        xmlDoc.Load("d:books.xml")
        Call showXML()
    End Sub
或者也可以使用xmlDocument.LoadXml载入xml结构的字符串:
还需要添加对IO的引用:
Imports System.IO


Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
        xmlDoc = New XmlDocument()
        Dim myreader As TextReader = New StreamReader("d:books.xml")
        Dim mystring As String = myreader.ReadToEnd
        xmlDoc.LoadXml(mystring)
        myreader.Close()
        Call showXML()
    End Sub

以上两个方法都可以。
showXML()将读取的xml数据显示到Listview中:
Private Sub showXML()
        ListView1.Items.Clear()

        Dim rootElement As XmlElement
        rootElement = xmlDoc.DocumentElement

        Dim xmlNl As XmlNodeList = rootElement.ChildNodes
        Dim lvItem As ListViewItem
        For Each xmlchild As XmlNode In xmlNl
            lvItem = New ListViewItem(xmlchild.Attributes("ISBN").Value)

            For Each xmlgrandchild As XmlNode In xmlchild.ChildNodes
                lvItem.SubItems.Add(xmlgrandchild.InnerText)
            Next
            ListView1.Items.Add(lvItem)
        Next
    End Sub

通过xmlDoc.DocumentElement 获得文档的根元素,也就是BookStore

通过rootElement.ChildNodes获得根元素下的所有子节点,也就是所有的Book 节点,这是一个XmlNodeList类

通过for 循环来获得每个Book节点

通过xmlchild.Attributes("ISBN").Value 获得Book 节点的 ISBN 属性

通过再次的for循环,枚举 Book 节点下的子节点,并用xmlgrandchild.InnerText获得相应的值


运行结果:


由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读