Cyperfriend
Der ohne Avatar
- Registriert
- 14 Juli 2013
- Beiträge
- 1.123
Ich habe ein Übungsprogramm geschrieben um XML-Dateien lesen und schreiben zu können. Klappt soweit auch.
Nun möchte ich zwei Dinge im Programm ergänzen und erbitte eure Hilfe.
1) Wie kann ich alle Vornamen und Nachnamen aus der XML-Datei auslesen und im Dropdown anzeigen lassen?
2) Wie kann ich die Attribute Alter und Geschlecht zum gewählten Eintrag anzeigen lassen?
Zu 1). Ich weis, dass ich das Ganze mit einer foreach-Schleifen machen kann, aber mehr weis ich leider nicht, bzw. bin nicht weiter gekommen
Zu 2). Müsste ja irgendwie mit einer where-Abfrage gemacht werden, aber Google erweist sich nicht gerade als hilfreich.
[src=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.IO;
namespace Laden_Speichern
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string pfad = @"C:\_test\database.xml";
string geschlecht;
private void cmdEingabeSpeichern_Click(object sender, EventArgs e)
{
if(radioEingabeMaennlich.Checked)
{
geschlecht = "Männlich";
}
if (radioEingabeWeiblich.Checked)
{
geschlecht = "Weiblich";
}
if ((txtNachname.Text == "") || (txtVorname.Text == "") || (comboAlter.Text == ""))
{
toolStripStatus.Text = "Status: Fehler - Bitte alle Eingabefelder ausfüllen!";
}
else if (!File.Exists(pfad))
{
XmlTextWriter xWriter = new XmlTextWriter(pfad, Encoding.UTF8);
xWriter.Formatting = Formatting.Indented;
xWriter.WriteStartElement("People"); // <People>
xWriter.WriteStartElement("Person"); // <Person>
xWriter.WriteStartElement("Nachname"); // <Nachname>
xWriter.WriteString(txtVorname.Text); // Textbox Nachname
xWriter.WriteEndElement(); // </Nachname>
xWriter.WriteStartElement("Vorname"); // <Vorname>
xWriter.WriteString(txtNachname.Text); // Textbox Vorname
xWriter.WriteEndElement(); // </Vorname>
xWriter.WriteStartElement("Alter"); // <Alter>
xWriter.WriteString(comboAlter.Text); // ComboBox Alter
xWriter.WriteEndElement(); // </Alter>
xWriter.WriteStartElement("Geschlecht"); // <Geschlecht>
xWriter.WriteString(geschlecht); // Variable Geschlecht
xWriter.WriteEndElement(); // </Geschlecht>
xWriter.WriteEndElement(); // </Person>
xWriter.WriteEndElement(); // </People>
xWriter.Close();
toolStripStatus.Text = "Status: Datei erstellt, Eintrag gespeichert";
}
else
{
XmlDocument doc = new XmlDocument();
doc.Load(pfad);
XmlNode person = doc.CreateElement("Person");
XmlNode nachname = doc.CreateElement("Nachname");
nachname.InnerText = txtNachname.Text;
person.AppendChild(nachname);
XmlNode vorname = doc.CreateElement("Vorname");
vorname.InnerText = txtVorname.Text;
person.AppendChild(vorname);
XmlNode alter = doc.CreateElement("Alter");
alter.InnerText = comboAlter.Text;
person.AppendChild(alter);
XmlNode geschlecht1 = doc.CreateElement("Geschlecht");
geschlecht1.InnerText = geschlecht;
person.AppendChild(geschlecht1);
doc.DocumentElement.AppendChild(person);
doc.Save(pfad);
toolStripStatus.Text = "Status: Eintrag gespeichert";
}
}
private void Form1_Load(object sender, EventArgs e)
{
toolStripStatus.Text = "Status: Programm gestartet";
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "XML| *.xml";
if (ofd.ShowDialog() == DialogResult.OK);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(ofd.FileName);
string nachname;
string vorname;
nachname = (xDoc.SelectSingleNode("People/Person/Nachname").InnerText);
vorname = (xDoc.SelectSingleNode("People/Person/Vorname").InnerText);
comboAuswahl.Items.Add(nachname + ", " + vorname);
lblAusgabeAlter.Text = "Alter: ";
}
}
}[/src]
Anhang anzeigen 42017
Nun möchte ich zwei Dinge im Programm ergänzen und erbitte eure Hilfe.
1) Wie kann ich alle Vornamen und Nachnamen aus der XML-Datei auslesen und im Dropdown anzeigen lassen?
2) Wie kann ich die Attribute Alter und Geschlecht zum gewählten Eintrag anzeigen lassen?
Zu 1). Ich weis, dass ich das Ganze mit einer foreach-Schleifen machen kann, aber mehr weis ich leider nicht, bzw. bin nicht weiter gekommen
Zu 2). Müsste ja irgendwie mit einer where-Abfrage gemacht werden, aber Google erweist sich nicht gerade als hilfreich.
[src=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.IO;
namespace Laden_Speichern
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string pfad = @"C:\_test\database.xml";
string geschlecht;
private void cmdEingabeSpeichern_Click(object sender, EventArgs e)
{
if(radioEingabeMaennlich.Checked)
{
geschlecht = "Männlich";
}
if (radioEingabeWeiblich.Checked)
{
geschlecht = "Weiblich";
}
if ((txtNachname.Text == "") || (txtVorname.Text == "") || (comboAlter.Text == ""))
{
toolStripStatus.Text = "Status: Fehler - Bitte alle Eingabefelder ausfüllen!";
}
else if (!File.Exists(pfad))
{
XmlTextWriter xWriter = new XmlTextWriter(pfad, Encoding.UTF8);
xWriter.Formatting = Formatting.Indented;
xWriter.WriteStartElement("People"); // <People>
xWriter.WriteStartElement("Person"); // <Person>
xWriter.WriteStartElement("Nachname"); // <Nachname>
xWriter.WriteString(txtVorname.Text); // Textbox Nachname
xWriter.WriteEndElement(); // </Nachname>
xWriter.WriteStartElement("Vorname"); // <Vorname>
xWriter.WriteString(txtNachname.Text); // Textbox Vorname
xWriter.WriteEndElement(); // </Vorname>
xWriter.WriteStartElement("Alter"); // <Alter>
xWriter.WriteString(comboAlter.Text); // ComboBox Alter
xWriter.WriteEndElement(); // </Alter>
xWriter.WriteStartElement("Geschlecht"); // <Geschlecht>
xWriter.WriteString(geschlecht); // Variable Geschlecht
xWriter.WriteEndElement(); // </Geschlecht>
xWriter.WriteEndElement(); // </Person>
xWriter.WriteEndElement(); // </People>
xWriter.Close();
toolStripStatus.Text = "Status: Datei erstellt, Eintrag gespeichert";
}
else
{
XmlDocument doc = new XmlDocument();
doc.Load(pfad);
XmlNode person = doc.CreateElement("Person");
XmlNode nachname = doc.CreateElement("Nachname");
nachname.InnerText = txtNachname.Text;
person.AppendChild(nachname);
XmlNode vorname = doc.CreateElement("Vorname");
vorname.InnerText = txtVorname.Text;
person.AppendChild(vorname);
XmlNode alter = doc.CreateElement("Alter");
alter.InnerText = comboAlter.Text;
person.AppendChild(alter);
XmlNode geschlecht1 = doc.CreateElement("Geschlecht");
geschlecht1.InnerText = geschlecht;
person.AppendChild(geschlecht1);
doc.DocumentElement.AppendChild(person);
doc.Save(pfad);
toolStripStatus.Text = "Status: Eintrag gespeichert";
}
}
private void Form1_Load(object sender, EventArgs e)
{
toolStripStatus.Text = "Status: Programm gestartet";
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "XML| *.xml";
if (ofd.ShowDialog() == DialogResult.OK);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(ofd.FileName);
string nachname;
string vorname;
nachname = (xDoc.SelectSingleNode("People/Person/Nachname").InnerText);
vorname = (xDoc.SelectSingleNode("People/Person/Vorname").InnerText);
comboAuswahl.Items.Add(nachname + ", " + vorname);
lblAusgabeAlter.Text = "Alter: ";
}
}
}[/src]
Anhang anzeigen 42017
