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):
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