[VBA] fusion de 2 fichier XML ?
Résolu/Fermé
A voir également:
- [VBA] fusion de 2 fichier XML ?
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier iso - Guide
1 réponse
Bon j'ai réussi à faire ce que je voulais, pour mon cas. C'est surement pas très optimal, mais bon je le mets.
Function test() Dim xmlDocA As New DOMDocument60 Dim xmlDocB As New DOMDocument60 xmlDocA.async = False xmlDocA.Load "c:\xmlbooks1.xml" xmlDocB.async = False xmlDocB.Load "c:\xmlbooks2.xml" recursif xmlDocA.DocumentElement, xmlDocB.DocumentElement, 1 xmlDocA.Save "c:\result.xml" Set xmlDocA = Nothing Set xmlDocB = Nothing End Function Function recursif(ByRef parentElementA As IXMLDOMElement, ByRef parentElementB As IXMLDOMElement, ByVal Level As Integer) Dim indexaA As Integer Dim indexaB As Integer For IndexA = 0 To parentElementA.ChildNodes.Length - 1 IndexB = 0 Do While IndexB <= (parentElementB.ChildNodes.Length - 1) If parentElementA.ChildNodes(IndexA).NodeType = NODE_TEXT Or _ parentElementB.ChildNodes(IndexB).NodeType = NODE_TEXT Then Exit Function If extractNodeAttributes(parentElementA.ChildNodes(IndexA).XML) = _ extractNodeAttributes(parentElementB.ChildNodes(IndexB).XML) Then recursif parentElementA.ChildNodes(IndexA), parentElementB.ChildNodes(IndexB), Level + 1 parentElementB.RemoveChild parentElementB.ChildNodes(IndexB) 'IndexB = 0 Else IndexB = IndexB + 1 End If Loop Next IndexA For IndexA = 0 To parentElementB.ChildNodes.Length - 1 parentElementA.appendChild parentElementB.ChildNodes(IndexA) Next IndexA End Function Function extractNodeAttributes(ByVal xmlString As String) As String Dim iEnd As Integer iEnd = InStr(1, xmlString, ">", vbTextCompare) extractNodeAttributes = Mid(xmlString, 2, iEnd - 2) End Function