1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| Option Explicit
Private mDom As DOMDocument40
Private Sub Form_Load()
Dim Info As IXMLDOMElement
Dim Root As IXMLDOMElement
Set mDom = New MSXML2.DOMDocument40
mDom.appendChild mDom.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
Set Root = AjouterElement("DONNEES", mDom)
Set Info = AjouterElement("INFO", Root)
AjouterElement("nomProg", Info).Text = "ProjectCB"
AjouterElement("language", Info).Text = "french"
AjouterElement("version", Info).Text = "1.00"
AjouterElement("Auteur1", Info).Text = "wwww"
AjouterElement("Auteur2", Info).Text = "xxxx"
AjouterElement "PARAMETRAGE", Root
Debug.Print IndentXML(mDom.Xml)
End Sub
Public Function AjouterElement(ByVal Name As String, ByRef ElementParent As IXMLDOMNode, Optional ByRef InsertBefore As IXMLDOMNode = Nothing) As IXMLDOMElement
'Ajouter un élément dans le document DOM
Set AjouterElement = mDom.createNode(NODE_ELEMENT, Name, "")
ElementParent.InsertBefore AjouterElement, InsertBefore
End Function
Public Function IndentXML(ByVal Xml As String) As String
'Indente le XML qui sinon est sur une seule ligne
Dim NbIndent As Integer
Dim Pos As Long
NbIndent = 0
Pos = InStr(Xml, "><")
Do While Pos <> 0
If Mid(Xml, Pos - 1, 1) = "/" Then
If Mid(Xml, Pos + 2, 1) = "/" Then
'/></
NbIndent = NbIndent - 1
Else
'/><
NbIndent = NbIndent
End If
Else
If Mid(Xml, Pos + 2, 1) = "/" Then
'></
NbIndent = NbIndent - 1
Else
'><
'Regarde si le node est une basile de fin ex: "</NodeInfo>"
Pos = InStrRev(Xml, "<", Pos)
Select Case Mid(Xml, Pos + 1, 1)
Case "/", "!"
'</NodeInfo><Created>
'ou
'<!-- C'est un commentaire
NbIndent = NbIndent
Case Else
'<AuditPool><Created>
NbIndent = NbIndent + 1
End Select
End If
End If
Xml = Replace(Xml, "><", ">" & vbCrLf & String(NbIndent, vbTab) & "<", , 1)
Pos = InStr(Xml, "><")
Loop
IndentXML = Xml
End Function |
Partager