Hallo zusammen,
ich habe folgenden Aufbau in einem XML-File:
Ich möchte z.B. aus diesem XML-File den Knoten
löschen.
Ich mache dies mit folgendem Code:
[highlight=vbnet]
Public Function XMLDelete(ByVal TlStrpPGP As ToolStripProgressBar, ByRef PGB As Integer, ByVal Drive As Mapping, ByRef errMsg As String) As Boolean
If IO.File.Exists(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives) = False Then
errMsg = "Es ist keine Datei der Laufwerke vorhanden !"
Return False
End If
Dim XMLReader As Xml.XmlTextReader = Nothing
Try
Try
Dim XMLDoc As System.Xml.XmlDocument = New System.Xml.XmlDocument()
XMLDoc.Load(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives)
Catch ex As Exception
errMsg = "Fehler:" & vbCrLf & ex.Message
Return False
End Try
XMLReader = New System.Xml.XmlTextReader(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives)
Dim XPathDoc As System.Xml.XPath.XPathDocument = New System.Xml.XPath.XPathDocument(XMLReader)
Dim Navigator As System.Xml.XPath.XPathNavigator
Navigator = XPathDoc.CreateNavigator()
Dim Iterator As System.Xml.XPath.XPathNodeIterator = Navigator.Select("/" & strXMLRoot)
While Iterator.MoveNext
Dim Nav As System.Xml.XPath.XPathNavigator
Nav = Iterator.Current.SelectSingleNode(strNodeDrive)
Do
If IsNothing(Nav) Then Exit Do
Dim MyInnerXML() As String = Nothing
Dim MyDrive As String = String.Empty
Dim MyUNCPath As String = String.Empty
MyInnerXML = Split(Nav.InnerXml, vbCrLf)
If MyInnerXML.Length >= 3 Then
MyDrive = Strings.Mid(MyInnerXML(0).ToString, MyInnerXML(0).ToString.IndexOf(">") + 2, MyInnerXML(0).ToString.LastIndexOf("<") - MyInnerXML(0).ToString.IndexOf(">") - 1)
MyUNCPath = Strings.Mid(MyInnerXML(1).ToString, MyInnerXML(1).ToString.IndexOf(">") + 2, MyInnerXML(1).ToString.LastIndexOf("<") - MyInnerXML(1).ToString.IndexOf(">") - 1)
If Drive.Drive.ToUpper = MyDrive.ToUpper And Drive.UNCPath.ToUpper = MyUNCPath.ToUpper Then
'Nav.DeleteRange(Nav)
'Nav.SetValue("")
Nav.DeleteSelf()
Exit Do
End If
End If
Loop Until Nav.MoveToNext = False
End While
Catch ex As Exception
errMsg = ex.Message
Return False
Finally
If Not IsNothing(XMLReader) Then
If Not XMLReader.ReadState = Xml.ReadState.Closed Then XMLReader.Close()
End If
End Try
Return True
End Function
[/highlight]
In folgender Zeile bekomme ich einen Fehler:
"Die angegebene Methode wird nicht unterstützt"
In der Hilfe wird das aber genau so gemacht oder hab ich da was übersehen...?
Kann mir hier jemand weiterhelfen..
Oder eine andere Methode vorschlagen...
Schon mal Danke für eure Untersstützung
ich habe folgenden Aufbau in einem XML-File:
Code:
<?xml version="1.0" encoding="UTF-8"?> <MapDrives> <ADUser> <User>Ich</User> <PWD>JPzW7rV7kmTyIDl4NBgocL3hRxGZfB/i7rDB1k4qEGA=</PWD> </ADUser> <MapDrive> <Drive>r</Drive> <UNCPath>\\MeinLW1</UNCPath> <Persistent>False</Persistent> </MapDrive> <MapDrive> <Drive>x</Drive> <UNCPath>\\MeinLW2</UNCPath> <Persistent>False</Persistent> </MapDrive> <MapDrive> <Drive>y</Drive> <UNCPath>\\MeinLW3</UNCPath> <Persistent>False</Persistent> </MapDrive> </MapDrives>
Code:
<MapDrive> <Drive>x</Drive> <UNCPath>\\MeinLW2</UNCPath> <Persistent>False</Persistent> </MapDrive>
Ich mache dies mit folgendem Code:
[highlight=vbnet]
Public Function XMLDelete(ByVal TlStrpPGP As ToolStripProgressBar, ByRef PGB As Integer, ByVal Drive As Mapping, ByRef errMsg As String) As Boolean
If IO.File.Exists(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives) = False Then
errMsg = "Es ist keine Datei der Laufwerke vorhanden !"
Return False
End If
Dim XMLReader As Xml.XmlTextReader = Nothing
Try
Try
Dim XMLDoc As System.Xml.XmlDocument = New System.Xml.XmlDocument()
XMLDoc.Load(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives)
Catch ex As Exception
errMsg = "Fehler:" & vbCrLf & ex.Message
Return False
End Try
XMLReader = New System.Xml.XmlTextReader(Application.StartupPath & IO.Path.DirectorySeparatorChar & XMLDrives)
Dim XPathDoc As System.Xml.XPath.XPathDocument = New System.Xml.XPath.XPathDocument(XMLReader)
Dim Navigator As System.Xml.XPath.XPathNavigator
Navigator = XPathDoc.CreateNavigator()
Dim Iterator As System.Xml.XPath.XPathNodeIterator = Navigator.Select("/" & strXMLRoot)
While Iterator.MoveNext
Dim Nav As System.Xml.XPath.XPathNavigator
Nav = Iterator.Current.SelectSingleNode(strNodeDrive)
Do
If IsNothing(Nav) Then Exit Do
Dim MyInnerXML() As String = Nothing
Dim MyDrive As String = String.Empty
Dim MyUNCPath As String = String.Empty
MyInnerXML = Split(Nav.InnerXml, vbCrLf)
If MyInnerXML.Length >= 3 Then
MyDrive = Strings.Mid(MyInnerXML(0).ToString, MyInnerXML(0).ToString.IndexOf(">") + 2, MyInnerXML(0).ToString.LastIndexOf("<") - MyInnerXML(0).ToString.IndexOf(">") - 1)
MyUNCPath = Strings.Mid(MyInnerXML(1).ToString, MyInnerXML(1).ToString.IndexOf(">") + 2, MyInnerXML(1).ToString.LastIndexOf("<") - MyInnerXML(1).ToString.IndexOf(">") - 1)
If Drive.Drive.ToUpper = MyDrive.ToUpper And Drive.UNCPath.ToUpper = MyUNCPath.ToUpper Then
'Nav.DeleteRange(Nav)
'Nav.SetValue("")
Nav.DeleteSelf()
Exit Do
End If
End If
Loop Until Nav.MoveToNext = False
End While
Catch ex As Exception
errMsg = ex.Message
Return False
Finally
If Not IsNothing(XMLReader) Then
If Not XMLReader.ReadState = Xml.ReadState.Closed Then XMLReader.Close()
End If
End Try
Return True
End Function
[/highlight]
In folgender Zeile bekomme ich einen Fehler:
"Die angegebene Methode wird nicht unterstützt"
Code:
Nav.DeleteSelf()
Kann mir hier jemand weiterhelfen..
Oder eine andere Methode vorschlagen...
Schon mal Danke für eure Untersstützung
Comment