在VB中我们可以使用XML解释器来对XML文件进行各种操作.XML解释器被封装在一个名字叫做msxml.dll的动态连接库文件中,它是一个COM对象.因此所有可以兼容ActiveX的环境中都可以使用该方法操作XML文档.
我们用一个实例来说明.
首先,我们建立一个名字为test.xml的xml文件.内容如下:
<作者信息>
<网名>古铁神刀网名>
<性别>男性别>
<手机>13584517846手机>
<电话>0531-82296272电话>
<个人主页>http://www.xyxtl.cn个人主页>
作者信息>
新建一个标准EXE工程。选择"工程" - "引用",选取"Microsoft XML V2.0"或更高版本.这样我们就可以使用xml解释器了.
接下来在form中添加控件.
切换到代码视图,添加如下代码:
Option Explicit
Private p_AppPath As String '当前目录路径
Private Sub Form_Load()
'得到当前目录
p_AppPath = App.Path
If Right(p_AppPath, 1) <> "/" And Right(p_AppPath, 1) <> "" Then
p_AppPath = p_AppPath & "/"
End If
End Sub
分别双击载入、保存、退出系统,添加代码:
Private Sub cmdLoad_Click()
'载入文件内容
loadValues
End Sub
Private Sub cmdSave_Click()
'保存当前内容
saveValues
End Sub
Private Sub cmdQuit_Click()
Unload Me
End Sub
现在我们编写过程实现文件的读入和写出:
Private Sub loadValues()
Dim xml_document As DOMDocument
Dim values_node As IXMLDOMNode
'载入文件
Set xml_document = New DOMDocument
MsgBox p_AppPath & "test.xml"
xml_document.Load p_AppPath & "test.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, "性别", "???")
txtHand.Text = GetNodeValue(values_node, "手机", "???")
txtTel.Text = GetNodeValue(values_node, "电话", "???")
txtQQ.Text = GetNodeValue(values_node, "QQ", "???")
txtPage.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, "手机", txtHand.Text
CreateNode values_node, "电话", txtTel.Text
CreateNode values_node, "QQ", txtQQ.Text
CreateNode values_node, "个人主页", txtPage.Text
' 保存XML文件
xml_document.save p_AppPath & "test.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
最后运行程序,看一下效果