5.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von mctommson Einsteiger_in (55 Punkte)
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

3 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Du erzeugst zwar einen XmlNode, verknüpfst diesen aber nicht mit deinem XmlDocument. Dafür gibt es Methoden wie AppendChild()
0 Punkte
Beantwortet von teerbaby Mitglied (525 Punkte)
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");

}
}

msdn.microsoft.com/en-us/library/dw229a22.aspx
0 Punkte
Beantwortet von mctommson Einsteiger_in (55 Punkte)
Ach, da unten gibts immer Beispiel-Codes...das is ja nice...

Danke!!
...