Trier les noeuds d'un flux XML

Contenu du snippet

Public Function SortNodes(ByRef voRoot As IXMLDOMNode, ByRef vsPath As String, ByRef vsSortBy As String) As IXMLDOMNode
Dim oNode As IXMLDOMNode
Dim oPlace As IXMLDOMNode
Dim oClone As IXMLDOMNode
On Local Error GoTo Handler
   If Not Nothing Is voRoot Then
       Set SortNodes = voRoot.cloneNode(True)
       
       For Each oNode In SortNodes.selectNodes(vsPath)
           Set oPlace = oNode
           Do Until Nothing Is oPlace.previousSibling
               Set oPlace = oPlace.previousSibling
           Loop
           Do
               If Nothing Is oPlace Then
                   Set oPlace = oNode.parentNode
                   oPlace.removeChild oNode
                   oPlace.appendChild oNode
                   Exit Do
               ElseIf oNode.selectSingleNode(vsSortBy).Text < oPlace.selectSingleNode(vsSortBy).Text Then
                   oPlace.parentNode.removeChild oNode
                   oPlace.parentNode.insertBefore oNode, oPlace
                   Exit Do
               End If
               Set oPlace = oPlace.nextSibling
           Loop
       Next oNode
   End If
Exit Function 

Compatibilité : VB6, VBA

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.