Anfängerfrage - XML erstellen unter C# - Datei bleibt leer
Hi!
Ich bin totaler C#-Beginner und versuche gerade ein XML-File nach diesem Schema zu erstellen und abzuspeichern:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<hallo>
<element1>Text</element1>
</hallo>
Da ich mich zusätzlich noch mit XML auch nicht auskenne, erschwert das die ganze Prozedur natürlich.
Ich hab nun innerhalb von 40 Minuten folgenden Code produziert:
XmlDocument newxml = new XmlDocument();
newxml.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
newxml.CreateNode(XmlNodeType.Element, "Element1", "");
newxml.CreateAttribute("Text");
StreamWriter bla = new StreamWriter("C:\\Users\\mctommson\\Desktop\\test.xml");
newxml.Save(bla);
Die test.xml wird erstellt, ist allerdings leer.
Ich hab nachgelesen, dass jede XML ein Root Element benötigt. Das gebe ich in meinem Code aber nirgends an.
Ich habe mir alle Create-Members angesehen. Aber irgendwie finde ich keine Create-Methode, die mir ein Root-Element erzeugt. Ich glaube, dass es genau da Probleme gibt.
Ich weiss, dass ein XML auf viele andere Arten erstellt werden kann, aber ich will hier ausschließlich die XMLDocument Klasse verwenden. Ich würde sogar noch gerne die StreamWrite Methode entfernen, wenn es eine andere Methode gibt, das generierte XML zu speichern. Es soll einfach eine Übung sein.
Ich weiss nicht, wieviel in dem Code falsch ist, aber vielleicht genügt nur ein Denkanstoß?
Danke euch!
Lg
Antwort schreiben
Antwort 1 von Supermax vom 24.03.2021, 21:52 Options
Du erzeugst zwar einen XmlNode, verknüpfst diesen aber nicht mit deinem XmlDocument. Dafür gibt es Methoden wie AppendChild()
Antwort 2 von Teerbaby vom 25.03.2021, 09:08 OptionsLösung
Hier mal das Beispiel aus der MSDN:
using System;
using System.Xml;
public class Sample {
public static void Main() {
// Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
// Add a price element.
XmlElement newElem = doc.CreateElement("price");
newElem.InnerText = "10.95";
doc.DocumentElement.AppendChild(newElem);
// Save the document to a file. White space is
// preserved (no white space).
doc.PreserveWhitespace = true;
doc.Save("data.xml");
}
}
http://msdn.microsoft.com/en-us/library/dw229a22.aspx
Antwort 3 von mctommson vom 25.03.2021, 17:15 Options
Ach, da unten gibts immer Beispiel-Codes...das is ja nice...
Danke!!