Neue Daten in XML Datei einfügen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Azumino.

    Neue Daten in XML Datei einfügen

    Hallo ihr lieben,

    Ich habe mal eine Frage zum Thema XML:
    Ich will neue Daten in eine XML Laden und sichern. Es geht um meine Software die Dateien verschlüsseln kann. Da möchte ich in einer XML Datei folgende Daten sichern:
    1. Dateiname
    2. Verzeichnis der Datei
    3. Datum
    Diese Daten werden nur gebraucht wenn jmd eine Datei mit der Software startet. Also wenn jmd eine Datei auf die Verknüpfung legt und die Software sich startet.
    Dafür habe ich folgenden Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. If My.Application.CommandLineArgs.Any = True Then
    3. For Each arg In My.Application.CommandLineArgs
    4. Dim bytKey As Byte()
    5. Dim bytIV As Byte()
    6. If GetFileName(arg, False) = ".blackbird" Then
    7. 'Send the password to the CreateKey function.
    8. bytKey = CreateKey("*****************")
    9. 'Send the password to the CreateIV function.
    10. bytIV = CreateIV("*****************")
    11. 'Start the encryption.
    12. If System.IO.Directory.Exists("C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\") = True Then
    13. EncryptOrDecryptFile(arg, "C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\" & GetFileName(arg, False), _
    14. bytKey, bytIV, CryptoAction.ActionDecrypt)
    15. Else
    16. System.IO.Directory.CreateDirectory("C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\")
    17. EncryptOrDecryptFile(arg, "C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\" & GetFileName(arg, False), _
    18. bytKey, bytIV, CryptoAction.ActionDecrypt)
    19. End If
    20. Application.Exit()
    21. Else
    22. 'Send the password to the CreateKey function.
    23. bytKey = CreateKey("*****************")
    24. 'Send the password to the CreateIV function.
    25. bytIV = CreateIV("*****************")
    26. 'Start the encryption.
    27. If System.IO.Directory.Exists("C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\") = True Then
    28. EncryptOrDecryptFile(arg, "C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\" & GetFileName(arg, True), _
    29. bytKey, bytIV, CryptoAction.ActionEncrypt)
    30. Application.Exit()
    31. Else
    32. System.IO.Directory.CreateDirectory("C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\")
    33. EncryptOrDecryptFile(arg, "C:\Users\Blackbird OS\Desktop\Verschlüsselte Dateien\" & GetFileName(arg, True), _
    34. bytKey, bytIV, CryptoAction.ActionEncrypt)
    35. Application.Exit()
    36. End If
    37. End If
    38. Next
    39. Else
    40. End If
    41. End Sub

    Doch bei der XML Sub erstellt diese nur einen Eintrag:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-16"?>
    2. <files>
    3. <files filename="Neues Textdokument - Kopie (4).txt" dir="C:\Users\Dario\Blackbird OS\Neues Textdokument - Kopie (4).txt" time="0" />
    4. </files>


    und die XML Sub:
    Bitte klicken

    VB.NET-Quellcode

    1. Private Sub XMLWriter(ByVal filename As String, ByVal dir As String, ByVal time As DateFormat)
    2. ' Auswahl einer Kodierungsart für die Zeichenablage
    3. Dim enc As New System.Text.UnicodeEncoding
    4. ' XmlTextWriter-Objekt für unsere Ausgabedatei erzeugen:
    5. Dim XMLobj As Xml.XmlTextWriter = New Xml.XmlTextWriter("Dataset_Filenames.xml", enc)
    6. With XMLobj
    7. ' Formatierung: 4er-Einzüge verwenden
    8. .Formatting = Xml.Formatting.Indented
    9. .Indentation = 4
    10. ' Dann fangen wir mal an:
    11. .WriteStartDocument()
    12. ' Beginn eines Elements "Personen". Darin werden wir mehrere
    13. ' Elemente "Person" unterbringen.
    14. .WriteStartElement("files")
    15. ' Hier kommt das erste Element "Person". Eine Person hat
    16. ' in unserem einfachen Beispiel einen Titel, einen Nach-
    17. ' namen und einen Vornamen. Als Demo soll uns das genügen.
    18. .WriteStartElement("files") ' <Person
    19. .WriteAttributeString("filename", filename)
    20. .WriteAttributeString("dir", dir)
    21. .WriteAttributeString("time", time)
    22. .WriteEndElement() ' Person />
    23. ' Nachdem das Element "Personen" zwei Elemente "Person"
    24. ' erhalten hat, beenden wir die Ausgabe für "Personen"...
    25. .WriteEndElement() ' </Personen>
    26. ' ... und schließen das XML-Dokument (und die Datei)
    27. XMLobj.Flush()
    28. .Close() ' Document
    29. End With
    30. ' Und so sieht die Ergebnisdatei aus:
    31. ' -----------------------------------
    32. '<?xml version="1.0" encoding="utf-16"?>
    33. '<Personen>
    34. ' <Person Titel="Dr." Name="Meyer" Vorname="Hans" />
    35. ' <Person Titel="" Name="Schmidt" Vorname="Carlos" />
    36. '</Personen>
    37. End Sub
    38. Private Sub XMLReader()
    39. ' Wir benötigen einen XmlReader für das Auslesen der XML-Datei
    40. Dim XMLReader As Xml.XmlReader _
    41. = New Xml.XmlTextReader("quickie.xml")
    42. ' Es folgt das Auslesen der XML-Datei
    43. With XMLReader
    44. Do While .Read ' Es sind noch Daten vorhanden
    45. ' Welche Art von Daten liegt an?
    46. Select Case .NodeType
    47. ' Ein Element
    48. Case Xml.XmlNodeType.Element
    49. Console.WriteLine("Es folgt ein Element vom Typ " & .Name)
    50. ' Alle Attribute (Name-Wert-Paare) abarbeiten
    51. If .AttributeCount > 0 Then
    52. ' Es sind noch weitere Attribute vorhanden
    53. While .MoveToNextAttribute ' nächstes
    54. Console.WriteLine("Feldname: " & .Name & _
    55. " -> " & _
    56. "Feldwert: " & .Value)
    57. End While
    58. End If
    59. ' Ein Text
    60. Case Xml.XmlNodeType.Text
    61. Console.WriteLine("Es folgt ein Text: " & .Value)
    62. ' Ein Kommentar
    63. Case Xml.XmlNodeType.Comment
    64. Console.WriteLine("Es folgt ein Kommentar: " & .Value)
    65. End Select
    66. Loop ' Weiter nach Daten schauen
    67. .Close() ' XMLTextReader schließen
    68. End With
    69. ' Und so sieht das Ergebnis der Ausgabe aus:
    70. ' ------------------------------------------
    71. 'Es folgt ein Element vom Typ Personen
    72. 'Es folgt ein Element vom Typ Person
    73. 'Feldname: Titel -> Feldwert: Dr.
    74. 'Feldname: Name -> Feldwert: Meyer
    75. 'Feldname: Vorname -> Feldwert: Hans
    76. 'Es folgt ein Element vom Typ Person
    77. 'Feldname: Titel -> Feldwert:
    78. 'Feldname: Name -> Feldwert: Schmidt
    79. 'Feldname: Vorname -> Feldwert: Carlos
    80. End Sub


    Die Daten werden benötigt um den Namen der alten Datei zu erkennen für die Entschlüsselung.
    Ich werde aber ein Code brauchen für die Identifikation der Verschlüsselten Dateien
    Danke für eure Hilfe
    Pack Deine Daten in eine DataTable innerhalb eines DataSets. Hier kannst Du einfach Einträge hinzufügen, löschen, bearbeiten und natürlich speichern und laden. Ohne viel Aufwand.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o