博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VBA 操作XML笔记
阅读量:6657 次
发布时间:2019-06-25

本文共 3858 字,大约阅读时间需要 12 分钟。

'需要在工程里面引入 microsoft xml 5.0 Private Sub SaveValues()Dim xml_document As New DOMDocumentDim values_node As IXMLDOMNodeDim 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_commentvalues_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 tempnodetempnode.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
  运行结果如下:

转载于:https://www.cnblogs.com/yuzhengdong/p/3464049.html

你可能感兴趣的文章
[LeetCode] Serialize and Deserialize Binary Tree
查看>>
datasnap 2010 DataSnap服务器如何得到客户端的IP和端口
查看>>
[转]iPhone 用UIGestureRecognizer侦测使用者输入操作
查看>>
10个必备的移动UI设计资源站(转)
查看>>
delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码...
查看>>
Do not go gentle into that good night
查看>>
调用IE内置打印组件完成web打印方案
查看>>
深度学习模型复现难?看看这篇句子对模型的复现论文
查看>>
领域特定语言
查看>>
Cocos2d-x高级开发教程:制作自己的《捕鱼达人》
查看>>
lightOJ 1172 Krypton Number System(矩阵+DP)
查看>>
DotNetBar 6.1 破解
查看>>
ubuntu下登录mysql
查看>>
(原创)关于C语言类型扩展的隐患
查看>>
Convert UIImage to NSString (and vice-versa)
查看>>
Xamarin为Mono for Android提供了一个可视化设计器
查看>>
Oracle 存储过程了解
查看>>
python 一致性hash
查看>>
jquery submit()不能提交表单的解决方法
查看>>
iOS:KVO/KVC 的概述与使用
查看>>