Hallo zusammen,
ich möchte gern Messwert die ich auslese in eine Xml Datei exportieren.
Da diese Messwert ohne die jeweiligen Messeinstellungen nichtssagend sind muss ich außerdem aus meinem Programm verschiedene Einstellungen von ComboBoxen, CheckBoxen usw. mit in die Xml schreiben. Ich wollte dabei alle, auch für die Messung irrelevante Werte aufnehmen. Die Elemente die nicht genutzt wurden wollte ich dann leer lassen.
Wie gehe ich dabei am besten vor?
Erzeuge ich mir dafür vielleicht ein Objekt und serialisiere es dann,
oder erzeuge ich das xml Dokument direkt in einer Klasse,
XmlDocument doc = new XmlDocument();
XmlNode myRoot, myNode;
XmlAttribute myAttribute;
myRoot = doc.CreateElement("AppendChild");
doc.AppendChild(myRoot);
myNode = doc.CreateElement("Child1");
myNode.InnerText = CheckBoxText;
Hallo,
ich würde versuchen es über Serialsierung zu lösen wenn möglich.
Dann spart man sich das Knoten-Gefummel mit dem XML... 8)
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hallo Rainer Wein,
denke auch das Serialisierung der einfachste und schönste Weg für dein Vorhaben ist
komplette Struktur an einer Stelle
einfaches importieren mittels Deserialisierung, um die ganzen Daten auch wieder anzuzeigen.
freundliche Grüße
Lars
Danke vielmals,
ich hab es jetzt mal mit der Serialisierung versucht, bin mir aber nicht sicher ob das alles so richtig ist.
Übrigens müssen die Daten nur exportiert werden, die Verarbeitung wird in einem anderen Programm stattfinden.
Code der Form1 mit einer ComboBox und einem NumericUpDown ( Testweise )
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void export_Click(object sender, EventArgs e)
{
xmlExport export = new xmlExport();
einstellungen e1 = new einstellungen(this);
werte w1 = new werte(this);
export._einstellungen1 = e1;
export._werte1 = w1;
XmlSerializer serializer = new XmlSerializer(typeof(xmlExport));
FileStream fs = new FileStream("test.xml", FileMode.Create);
serializer.Serialize(fs, export);
fs.Close();
export = null;
}
public string _comboBoxItem
{
get { return comboBox1.SelectedItem.ToString(); }
}
public decimal _numericValue
{
get { return numericUpDown1.Value; }
}
}
und meine Xml Struktur
[XmlRoot("TestXml")]
public class xmlExport
{
[XmlElement("Einstellungen")]
public einstellungen _einstellungen1;
[XmlElement("Werte")]
public werte _werte1;
public xmlExport() { }
}
public class einstellungen
{
[XmlElement("Element")]
public string element;
[XmlAttribute("ID", DataType = "int")]
public int id;
public einstellungen(Form1 _form1)
{
this.element = _form1._comboBoxItem;
this.id = 1;
}
public einstellungen() { }
}
public class werte
{
[XmlElement("Wert")]
public string wert;
[XmlAttribute("value", DataType = "decimal")]
public decimal value;
public werte(Form1 _form1)
{
this.wert = "1";
this.value = _form1._numericValue;
}
public werte() { }
}
Hallo Rainer,
ich glaube zwar, du hast dich bereits auf die Objekt-Variante eingeschossen, aber dennoch:
Ich mache sowas vorzugsweise mit DataSets. Die lassen sich auch prima in .xml serialisieren und deserialisieren. Weiterhin hast Du die Möglichkeit mehrere Messungen in einem Ritt zu speichern/laden und Du kannst im DataSet mit SQL-Befehlen ziemlich schnell einzelne Werte finden. Wenn Dir SQL nicht gefällt, kannst Du das DataSet auch ähnlich wie ein Array zum lesen/schreiben ansprechen.
Außerdem kannst Du das Serialisierte DataSet - also die -xml Datein direkt mit Excel öffnen (und wahrscheinlich auch mit einigen anderen Datenbankanwendungen).
Trotzdem auch weiterhin viel Spaß