熟悉了如何用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接口有一定的认识,所以,并不是得到很广泛的应用。
|
|