XML Elemente anfügen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ChaosBernd.

    XML Elemente anfügen

    Hallo Zusammen
    XML ist ja unter .NET bekanntlich eine ganz tolle Sache, deshalb speichere ich den grössten Teil auch in XML Dateien, nun habe ich ein Problem. Diesen Code habe ich:

    VB.NET-Quellcode

    1. Dim XmlDoc As New Xml.XmlDocument
    2. 'Write down the XML declaration
    3. Dim XmlDeclaration As Xml.XmlDeclaration = XmlDoc.CreateXmlDeclaration("1.0", "UTF-8", Nothing)
    4. 'Create the root element
    5. Dim RootNode As Xml.XmlElement = XmlDoc.CreateElement("RootNode")
    6. XmlDoc.InsertBefore(XmlDeclaration, XmlDoc.DocumentElement)
    7. XmlDoc.AppendChild(RootNode)
    8. 'Create a new <Category> element and add it to the root node
    9. Dim ParentNode As Xml.XmlElement = XmlDoc.CreateElement("Parent")
    10. 'Set attribute name and value!
    11. ParentNode.SetAttribute("AttributName", "AttributWert")
    12. XmlDoc.DocumentElement.PrependChild(ParentNode)
    13. 'Create the required nodes
    14. Dim FirstElement As Xml.XmlElement = XmlDoc.CreateElement("FirstElement")
    15. Dim SecondElement As Xml.XmlElement = XmlDoc.CreateElement("SecondElement")
    16. 'Dim ThirdElement As Xml.XmlElement = XmlDoc.CreateElement("ThirdElement")
    17. 'retrieve the text
    18. Dim FirstTextElement As Xml.XmlText = XmlDoc.CreateTextNode(TextBox1.Text)
    19. Dim SecondTextElement As Xml.XmlText = XmlDoc.CreateTextNode(TextBox2.Text)
    20. 'Dim ThirdTextElement As Xml.XmlText = XmlDoc.CreateTextNode("This is the text from the third element")
    21. 'append the nodes to the parentNode without the value
    22. ParentNode.AppendChild(FirstElement)
    23. ParentNode.AppendChild(SecondElement)
    24. 'ParentNode.AppendChild(ThirdElement)
    25. 'save the value of the fields into the nodes
    26. FirstElement.AppendChild(FirstTextElement)
    27. SecondElement.AppendChild(SecondTextElement)
    28. 'ThirdElement.AppendChild(ThirdTextElement)
    29. 'Save to the XML file
    30. XmlDoc.Save("C:\demo.xml")


    Ich möchte, dass er den Text der beiden Textboxen anfügt, wenn bereits Einträge in der XML Datei vorhanden sind. Jetzt werden sie immer ersetzt.
    Hallo ChaosBernd
    Danke für deine Antwort, jedoch klappt das nicht ganz, er fügt nicht hinzu, sondern ersetzt.

    Habe diesen Code:

    VB.NET-Quellcode

    1. XmlDoc.DocumentElement.PrependChild(ParentNode)


    Mit diesem ersetzt:

    VB.NET-Quellcode

    1. XmlDoc.DocumentElement.AppendChild(ParentNode)
    Du must das XMLDoc laden und dann Append mit eriner kleinen Sup erledigen.
    Wenn du mit XMLCreate arbeitest, wird ja auch jedesmal neu (Create) erstellt.
    Also Dokument Laden, Append, dann wieder Speichern.

    So ungefähr, habe ich allerdings nicht getestet nur zusammenkopiert.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Pfad As String = Environment.CurrentDirectory & "\Test1.xml" 'Test.xml"
    2. Dim xml As New Xml.XmlDocument
    3. xml.Load(Pfad) ' wenn Datei nicht leer
    4. ....
    5. nun über eine SubRutine Append.