需要添加Microsoft XML,version2.0的引用或更高版本
一 创建XML
Dim xmlDocum As MSXML2.DOMDocument
Dim xmlRoot As MSXML2.IXMLDOMElement
Dim xmlNode As MSXML2.IXMLDOMNode
Dim xmlElement As MSXML2.IXMLDOMElement
Dim pi As IXMLDOMProcessingInstruction
Dim xmlAttributs As MSXML2.IXMLDOMAttribute
Set xmlDocum = New MSXML2.DOMDocument
Set xmlRoot = xmlDocum.createElement("BookStore")
Set xmlDocum.documentElement = xmlRoot
Call xmlRoot.setAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
Call xmlRoot.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
Call xmlRoot.setAttribute("xmlns", "http://www.kingdee.com/ReK3Inventory")
Set xmlElement = xmlDocum.createNode(MSXML2.NODE_ELEMENT, "Shops", "")
Call xmlElement.setAttribute("Type", "S")
xmlRoot.appendChild xmlElement
'生成孩子节点添加到根节点上去,并且为这个节点设置一个属性
Set xmlNode = xmlDocum.createNode(MSXML2.NODE_ELEMENT, "ShopName", "")
xmlNode.Text = "CSDN"
xmlElement.appendChild xmlNode
Set xmlNode = xmlDocum.createNode(MSXML2.NODE_ELEMENT, "URL", "")
xmlNode.Text = "http://www.csdn.net"
xmlElement.appendChild xmlNode
Set xmlNode = xmlDocum.createNode(MSXML2.NODE_ELEMENT, "Address", "")
xmlNode.Text = "AH"
xmlElement.appendChild xmlNode
Set pi = xmlDocum.createProcessingInstruction("xml", "version='1.0' encoding='gb2312'")
Call xmlDocum.insertBefore(pi, xmlDocum.childNodes(0))
xmlDocum.save App.Path & "/CreateXML.xml"
得到如下结构的XML文件
***********************************************************
<?xml version="1.0" encoding="gb2312"?>
<BookStore xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.kingdee.com/ReK3Inventory">
<Shops Type="S">
<ShopName>CSDN</ShopName>
<URL>http://www.csdn.net</URL>
<Address>AH</Address>
</Shops>
</BookStore>
二 读取各结点值
Dim xmlDocument As New DOMDocument
Dim xmlNodeList As IXMLDOMNodeList
Dim xmlNode As IXMLDOMNode
Dim i As Integer, j As Integer
xmlDocument.async = False
If xmlDocument.Load(App.Path & "/CreateXML.xml") = False Then
MsgBox "XML文件载入失败!"
Set xmlDocument = Nothing
Exit Sub
End If
Set xmlNodeList = xmlDocument.getElementsByTagName("Shops")
'遍历指定的结点
For i = 0 To xmlNodeList.length - 1
Set xmlNode = xmlNodeList.Item(i)
'遍历下面的子元素
For j = 0 To xmlNode.childNodes.length - 1
Debug.Print xmlNode.childNodes.Item(j).Text
Next
Next
Set xmlNodeList = Nothing
Set xmlNode = Nothing
Set xmlDocument = Nothing