Hallo VB-Profis!
Ich sitze gerade vor meinem ersten Projekt in VB.NET (Komme von VB6).
Ziel ist es eine recht umfangreiche XML-Datei zu durchforsten und nicht mehr gültige Nodes zu entfernen.
Das lesen der XML-Datei habe ich schon geschafft. Ebenso die Erkennung der zu löschenden Nodes.
Allerdings werden beim Versuch diese Nodes zu löschen nur die Childnodes entfernt.
Aber am besten ich zeige euch einmal meinen Quellcode sowie einen Auszug aus der XML-Datei.
Ziel ist es zu prüfen ob das "projectdirectory" noch auf der Festplatte vorhanden ist. Wenn nicht soll der gesamte Node von <project> bis </project> gelöscht werden.
Nach Ausführung meines Codes bleiben aber <project> und </project> als Leichen übrig.
Wie schaffe ich es den ganzen Node sauber zu entfernen?
Danke für Eure Hilfe
Werner
Ich sitze gerade vor meinem ersten Projekt in VB.NET (Komme von VB6).
Ziel ist es eine recht umfangreiche XML-Datei zu durchforsten und nicht mehr gültige Nodes zu entfernen.
Das lesen der XML-Datei habe ich schon geschafft. Ebenso die Erkennung der zu löschenden Nodes.
Allerdings werden beim Versuch diese Nodes zu löschen nur die Childnodes entfernt.
Aber am besten ich zeige euch einmal meinen Quellcode sowie einen Auszug aus der XML-Datei.
VB.NET-Quellcode
- Public Sub Projekttester(xmldatei, basisverzeichnis)
- Dim xmldoc As XmlDocument
- Dim knotenliste As XmlNodeList
- 'Dim knoten As Xmlnode
- Dim knoten As XmlNode
- ' Erzeuge das XML Dokument
- xmldoc = New XmlDocument()
- ' Lade die angegebene XML-Datei
- xmldoc.Load(xmldatei)
- ' Erzeuge eine Liste aller Knoten (Dabei entspricht jeder Knoten einem Projekt)
- knotenliste = xmldoc.SelectNodes("/geoproject/projects/project")
- ' Loope durch alle Knoten
- For Each knoten In knotenliste
- ' Suche den Childknoten mit der Bezeichnung "projectdirectory"
- For zaehler = 0 To knoten.ChildNodes.Count - 1
- If knoten.ChildNodes(zaehler).Name = "projectdirectory" Then
- projektverzeichnis = basisverzeichnis + "\" + knoten.ChildNodes(zaehler).InnerText
- ' jetzt prüfe ob das Projekt noch im Basisverzeichnis vorhanden ist
- If System.IO.Directory.Exists(projektverzeichnis) = False Then
- ' wenn es nicht mehr vorhanden ist lösche den Eintrag aus der XML-Datei und speichere sie
- knoten.RemoveAll()
- xmldoc.Save(xmldatei)
- End If
- Exit For
- End If
- Next zaehler
- Next knoten
- End Sub
XML-Quellcode
- <geoproject version="1">
- <projects>
- <project>
- <projectname>11111 Ort1 Name1</projectname>
- <description>
- </description>
- <originator>Mustermann</originator>
- <dateofcreation>08.08.2014</dateofcreation>
- <projectdirectory>11111 Ort1 Name1</projectdirectory>
- <processor>Mustermann</processor>
- <projectlocale>Land</projectlocale>
- <attributes>
- <attribute>
- <name>Katastralgemeinde</name>
- <attributeValue>
- <stringelement>99999</stringelement>
- </attributeValue>
- </attribute>
- </attributes>
- </project>
- <project>
- <projectname>22222 Ort2 Name2</projectname>
- <description>
- </description>
- <originator>Mustermann</originator>
- <dateofcreation>20.08.2014</dateofcreation>
- <projectdirectory>22222 Ort2 Name2</projectdirectory>
- <processor>Mustermann</processor>
- <projectlocale>Land</projectlocale>
- <attributes>
- <attribute>
- <name>Katastralgemeinde</name>
- <attributeValue>
- <stringelement>99999</stringelement>
- </attributeValue>
- </attribute>
- </attributes>
- </project>
- </projects>
- </geoproject>
Ziel ist es zu prüfen ob das "projectdirectory" noch auf der Festplatte vorhanden ist. Wenn nicht soll der gesamte Node von <project> bis </project> gelöscht werden.
Nach Ausführung meines Codes bleiben aber <project> und </project> als Leichen übrig.
Wie schaffe ich es den ganzen Node sauber zu entfernen?
Danke für Eure Hilfe
Werner