XML Knoten als Nodelist

McLord

Grünschnabel
Hallo,

habe folgendes Problem:

Würde gerne die Knoten meiner XML Datei als Nodelist ausgeben.
Problem: die Liste kann nur 256 Zeilen aufnehmen, kann ich das umgehen?

Grund dafür ist das ich nach einem Bestimmten Knoten suche, um dessen Root oder das Child selber umzubenennen.

Hat einer eine Lösung?

Derzewit realisiere ich das so (aber halt nur die erste 256 Zeilen der Nodelist):

Code:
Private Sub treObjects_AfterLabelEdit(Cancel As Integer, NewString As String)

Dim PositionNodeList As IXMLDOMNodeList
Dim RenameNode As IXMLDOMNode
Dim XMLRoot As IXMLDOMNode
Dim MemberData As Variant
Dim PositionCounter As Long
Dim myString As String
Dim ChildCount As Integer
Dim NextChild As Node
Dim NextChildStr As String
Dim i As Integer

Dim test
    
    'Characters löschen
    myString = frmMain.treObjects.SelectedItem.Text
    myString = DelString(myString)

    myString = frmMain.treObjects.SelectedItem.Key & myString 'Zum suchen des Richtigen Objektes muss der Key hinzu
    ChildCount = frmMain.treObjects.SelectedItem.children
    Set NextChild = frmMain.treObjects.SelectedItem.Child

    If ChildCount > 0 Then
        For i = 1 To ChildCount
            NextChildStr = DelString(CStr(NextChild))
            myString = myString & NextChild.Key & NextChildStr
            'myString = DelString(myString)
            Set NextChild = NextChild.Next
        Next
    End If

    If frmMain.treObjects.SelectedItem.Index = 1 Then 'Wenn der Root ausgesucht wurde
        Set XMLRoot = DomProfile.documentElement.selectSingleNode("Treeview").selectSingleNode("SaphirRoot")
        XMLRoot.childNodes.Item(1).Text = NewString
    Else
        Set PositionNodeList = DomProfile.documentElement.childNodes.Item(2).selectNodes("//SaphirObject")
        ''Set PositionNodeList = DomProfile.documentElement.childNodes.Item(2).childNodes.Item(0).childNodes.Item(7).selectNodes("//SaphirObject")
        'If PositionNodeList.length > 256 Then
        For PositionCounter = 0 To PositionNodeList.length - 1 'Alle Position Elemente durchgehen
            If PositionNodeList.Item(PositionCounter).nodeTypedValue = myString Then 'Wenn das zu änderde Objekt selektiert wurde
                Set RenameNode = PositionNodeList.Item(PositionCounter)  'Das Element abspeichern indem der Text geändert wurde
                Exit For
            End If
        Next PositionCounter


        RenameNode.childNodes.Item(1).Text = NewString
        

    End If

    
DomProfile.save gActiveProfilePath 'Profile abspeichern

End Sub
 
Zurück