zoukankan      html  css  js  c++  java
  • VBA 生成XML(转)

    需要引用连个库,Microsoft ADO Ext. 6.0 for DDL and Security, Miscrosoft  ActiveX Data Objects 2.7 Library .

    Sub 按钮2_Click()
        Dim xmlFile As String
        xmlFile = "D:	estooks.xml"
        CreateXml xmlFile
    End Sub
    
    Function CreateXml(xmlFile As String)
        Dim xDoc As Object
        Dim rootNode As Object
        Dim header As Object
        Dim newNode As Object
        Dim tNode As Object
    
        Set xDoc = CreateObject("MSXML2.DOMDocument")
        Set rootNode = xDoc.createElement("BookList")
        Set xDoc.DocumentElement = rootNode
        'xDoc.Load xmlFile
        Set header = xDoc.createProcessingInstruction("xml", "version='1.0' encoding='Unicode'")
        xDoc.InsertBefore header, xDoc.ChildNodes(0)
    
        Set newNode = xDoc.createElement("book")
        Set tNode = xDoc.DocumentElement.appendChild(newNode)
        tNode.setAttribute "type", "program"
    
        Set newNode = xDoc.createElement("name")
        Set tNode = xDoc.DocumentElement.ChildNodes.Item(0).appendChild(newNode)
        tNode.appendChild (xDoc.createTextNode("Thinking in Java"))
    
        Set newNode = xDoc.createElement("author")
        Set tNode = xDoc.DocumentElement.ChildNodes.Item(0).appendChild(newNode)
        tNode.appendChild (xDoc.createTextNode("Bruce Eckel"))
    
        Set newNode = xDoc.createElement("book")
        Set tNode = xDoc.DocumentElement.appendChild(newNode)
        tNode.setAttribute "type", "literature"
    
        Set newNode = xDoc.createElement("name")
        Set tNode = xDoc.DocumentElement.ChildNodes.Item(1).appendChild(newNode)
        tNode.appendChild (xDoc.createTextNode("边城"))
    
        Set newNode = xDoc.createElement("author")
        Set tNode = xDoc.DocumentElement.ChildNodes.Item(1).appendChild(newNode)
        tNode.appendChild (xDoc.createTextNode("沈从文"))
    
        Set newNode = Nothing
        Set tNode = Nothing
    
        Dim xmlStr As String
        xmlStr = PrettyPrintXml(xDoc)
        WriteUtf8WithoutBom xmlFile, xmlStr
    
        Set rootNode = Nothing
        Set xDoc = Nothing
    
        MsgBox xmlFile & "输出完成"
    
    End Function
    
    '格式化xml,带换行缩进
    Function PrettyPrintXml(xmldoc) As String
        Dim reader As Object
        Dim writer As Object
        Set reader = CreateObject("Msxml2.SAXXMLReader.6.0")
        Set writer = CreateObject("Msxml2.MXXMLWriter.6.0")
        writer.indent = True
        writer.omitXMLDeclaration = True
        reader.contentHandler = writer
        reader.Parse (xmldoc)
        PrettyPrintXml = writer.Output
    End Function
    
    ' utf8无BOM编码格式
    Function WriteUtf8WithoutBom(filename As String, content As String)
        Dim stream As New ADODB.stream
        stream.Open
        stream.Type = adTypeText
        stream.Charset = "utf-8"
        stream.WriteText "<?xml version=" & Chr(34) & "1.0" & Chr(34) & _
                         " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?>" & vbCrLf
        stream.WriteText content
    
        '移除前三个字节(0xEF,0xBB,0xBF)
        stream.Position = 3
    
        Dim newStream As New ADODB.stream
        newStream.Type = adTypeBinary
        newStream.Mode = adModeReadWrite
        newStream.Open
    
        stream.CopyTo newStream
        stream.Flush
        stream.Close
    
        newStream.SaveToFile filename, adSaveCreateOverWrite
        newStream.Flush
        newStream.Close    
    End Function
    --------------------- 
    作者:luwhite 
    来源:CSDN 
    原文:https://blog.csdn.net/luwhite/article/details/52343305 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    

      

  • 相关阅读:
    【做题记录】区间排序—线段树
    【做题记录】CF1428E Carrots for Rabbits—堆的妙用
    线段树合并、分裂
    一、drf入门规范
    七、Django实战--图书管理系统搭建
    六、ORM模型层补充
    五、Django之模型层
    四、Django之模板层
    三、Django之视图层
    二、Django之路由层
  • 原文地址:https://www.cnblogs.com/luoye00/p/10694698.html
Copyright © 2011-2022 走看看