'需要在工程里面引入 microsoft xml 5.0
Private Sub SaveValues() Dim xml_document As New DOMDocument Dim values_node As IXMLDOMNode Dim Version As Variant ' Create the XML document. Set xml_document = New DOMDocument '设置版本信息并加入 Set Version = xml_document.createProcessingInstruction("xml", "version=" & Chr(34) & "1.0" & Chr(34) & " encoding=""gb2312""") xml_document.appendChild Version '生成根节点并把它设置为文件的根 Set values_node = xml_document.createElement("Test") Set xml_document.DocumentElement = values_node '添加注释并加入 values_node.appendChild xml_document.createTextNode(vbCrLf) Set value_comment = xml_document.createComment("This is a comment") values_node.appendChild value_comment values_node.appendChild xml_document.createTextNode(vbCrLf) '加入一个换行 '生成孩子节点添加到根节点上去,并且为这个节点设置一个属性 values_node.appendChild xml_document.createTextNode(vbTab) Set tempnode = xml_document.createNode(NODE_ELEMENT, "Web", "") tempnode.Text = " www.baidu.com" '设置孩子节点的值 values_node.appendChild tempnode tempnode.setAttribute "Type", "Homepage" '设置孩子节点的属性 values_node.appendChild xml_document.createTextNode(vbCrLf) '保存xml文件 xml_document.Save "c:\Values.xml" End Sub
熟悉了如何用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
运行结果如下: