科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB和VB.NET中的XML操作

VB和VB.NET中的XML操作

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文为计划将应用程序更新到VB.NET的VB开发用户提供一些关于XML的建议

作者:洪万福 来源:微软社区 2007年10月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
熟悉了如何用Visual Basic 6创建XML文件,接下来,我们将编写一个程序,使得程序开始运行时,程序从XML文件中加载数据,在程序运行结束时,将程序中的现行值存入XML文件中。

  首先,建立一个名叫Personal.xml的文件:

<?xml version="1.0" encoding="GB2312"?>

<个人信息>

<姓名>洪万福</姓名>

<性别>男</性别>

<出生日期>1983年x月x日</出生日期>

<地址>福建省厦门市集美大学水产学院新区270#</地址>

<邮编>361021</邮编>

<QQ>24948251</QQ>

<个人主页>http://hongwanfu.126.com</个人主页>

</个人信息>

  其中,encoding="GB2312"是为了防止显示中文时出现乱码。

  接着,进入Visual Basic 6,建立7个Label和7个TextBox, 具体如图:



  随后,编写如下代码:

Option Explicit
Private p_AppPath As String
Private Sub Form_Load()
 ' 获得程序运行目录
 p_AppPath = App.Path
 If Right$(p_AppPath, 1) <> "\" Then p_AppPath = p_AppPath & "\"
 ' 加载值
 LoadValues
End Sub

Private Sub Form_Unload(Cancel As Integer)
 ' 保存现有的值
 SaveValues
End Sub

Private Sub LoadValues()

 Dim xml_document As DOMDocument

 Dim values_node As IXMLDOMNode

 ' 载入文件

 Set xml_document = New DOMDocument
 xml_document.Load p_AppPath & "Personal.xml"
 If xml_document.documentElement Is Nothing Then

  Exit Sub

 End If

 '寻找节点
 Set values_node = xml_document.selectSingleNode("个人信息")
 ' 读取各个节点的值
 txtName.Text = GetNodeValue(values_node, "姓名", "???")
 txtSex.Text = GetNodeValue(values_node, "性别", "???")
 txtBirthday.Text = GetNodeValue(values_node, "出生日期", "???")
 txtAddress.Text = GetNodeValue(values_node, "地址", "???")
 txtZip.Text = GetNodeValue(values_node, "邮编", "???")
 txtQQ.Text = GetNodeValue(values_node, "QQ", "???")
 txtHomepage.Text = GetNodeValue(values_node, "个人主页", "???")

End Sub

' 返回各个节点的值

Private Function GetNodeValue(ByVal start_at_node As IXMLDOMNode, ByVal node_name As String, _

Optional ByVal default_value As String = "") As String

 Dim value_node As IXMLDOMNode
 Set value_node = start_at_node.selectSingleNode(".//" & node_name)
 If value_node Is Nothing Then
  GetNodeValue = default_value
 Else
  GetNodeValue = value_node.Text
 End If

End Function

' 保存现有的值

Private Sub SaveValues()
 Dim xml_document As DOMDocument
 Dim values_node As IXMLDOMNode
 ' 建立XML文件
 Set xml_document = New DOMDocument
 Set values_node = xml_document.createElement("个人信息")
 xml_document.appendChild values_node
 CreateNode values_node, "姓名", txtName.Text
 CreateNode values_node, "性别", txtSex.Text
 CreateNode values_node, "出生日期", txtBirthday.Text
 CreateNode values_node, "地址", txtAddress.Text
 CreateNode values_node, "邮编", txtZip.Text
 CreateNode values_node, "QQ", txtQQ.Text
 CreateNode values_node, "个人主页", txtHomepage.Text
 ' 保存XML文件
 xml_document.save p_AppPath & "Personal.xml"
 
End Sub

Private Sub CreateNode(ByVal parent As IXMLDOMNode, _

ByVal node_name As String, ByVal node_value As String)

 Dim new_node As IXMLDOMNode
 Set new_node = parent.ownerDocument.createElement(node_name)
 new_node.Text = node_value
 parent.appendChild new_node
End Sub

  运行结果如下:



  虽然,MSXML提供了从Visual Basic6.0加载和存储XML文档的工具,但是,对其的应用要求程序员对VB和MSXML的COM接口有一定的认识,所以,并不是得到很广泛的应用。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章