Note that there are some explanatory texts on larger screens.

plurals
  1. POXMLDocument: Root element is missing
    text
    copied!<p>I'm working on a program to manage all customers we have in our company. I want to use an XML file to save the customers. So I create an XML file (if not existing) and fill it with elements. Here you can see how I do:</p> <pre><code>string path = "C:\\Users\\Römel\\Desktop\\Save"; List&lt;Kunde&gt; kunde = new List&lt;Kunde&gt;(); private void Form1_Load(object sender, EventArgs e) { XmlDocument xdocument = new XmlDocument(); xdocument.Load(path + "\\save.xml"); foreach (XmlNode xnode in xdocument.SelectNodes("Kundenverwaltung/Kunde")) { Kunde k = new Kunde(); k.KundenNr = xnode.SelectSingleNode("KundenNr").InnerText; k.Nachname = xnode.SelectSingleNode("Nachname").InnerText; k.Vorname = xnode.SelectSingleNode("Vorname").InnerText; k.Adresse = xnode.SelectSingleNode("Adresse").InnerText; k.Ort = xnode.SelectSingleNode("Ort").InnerText; k.Telefon = xnode.SelectSingleNode("Telefon").InnerText; k.Mail = xnode.SelectSingleNode("Mail").InnerText; kunde.Add(k); listViewKunden.Items.Add(k.Nachname + " " + k.Vorname); } } private void btnAddCustomer_Click(object sender, EventArgs e) { if(!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (!File.Exists(path + "\\save.xml")) { XmlTextWriter xwriter = new XmlTextWriter(path + "\\save.xml", Encoding.UTF8); xwriter.WriteStartElement("Kundenverwaltung"); xwriter.WriteEndElement(); xwriter.Close(); } Kunde k = new Kunde(); k.KundenNr = txtKundenNr.Text; k.Nachname = txtKundeNachname.Text; k.Vorname = txtKundeVorname.Text; k.Adresse = txtKundeAdresse.Text; k.Ort = txtKundeOrt.Text; k.Telefon = txtKundeTel.Text; k.Mail = txtKundeMail.Text; kunde.Add(k); listViewKunden.Items.Add(k.Nachname + " " + k.Vorname); txtKundenNr.Text = ""; txtKundeNachname.Text = ""; txtKundeVorname.Text = ""; txtKundeAdresse.Text = ""; txtKundeOrt.Text = ""; txtKundeTel.Text = ""; txtKundeMail.Text = ""; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { XmlDocument xdoc = new XmlDocument(); xdoc.Load(path + "\\save.xml"); XmlNode xnode = xdoc.SelectSingleNode("Kundenverwaltung"); xnode.RemoveAll(); foreach (Kunde k in kunde) { XmlNode xtop = xdoc.CreateElement("Kunde"); XmlNode xkundennr = xdoc.CreateElement("KundenNr"); XmlNode xnachname = xdoc.CreateElement("Nachname"); XmlNode xvorname = xdoc.CreateElement("Vorname"); XmlNode xadresse = xdoc.CreateElement("Adresse"); XmlNode xort = xdoc.CreateElement("Ort"); XmlNode xtel = xdoc.CreateElement("Telefon"); XmlNode xmail = xdoc.CreateElement("Mail"); xkundennr.InnerText = k.KundenNr; xnachname.InnerText = k.Vorname; xvorname.InnerText = k.Nachname; xadresse.InnerText = k.Adresse; xort.InnerText = k.Ort; xtel.InnerText = k.Telefon; xmail.InnerText = k.Mail; xtop.AppendChild(xkundennr); xtop.AppendChild(xnachname); xtop.AppendChild(xvorname); xtop.AppendChild(xadresse); xtop.AppendChild(xort); xtop.AppendChild(xtel); xtop.AppendChild(xmail); xdoc.DocumentElement.AppendChild(xtop); } xdoc.Save(path + "\\save.xml"); e.Cancel = false; this.Close(); } </code></pre> <p>For <code>KundenNr</code>, <code>Nachname</code> etc. I created some classes in the end of my file. I hope it's not too much code.</p> <p>First: I can't use the regular "X" button in upper right corner because there is no reaction if I hit it. So I created an <code>Exit</code> button.</p> <p>Second: Everytime I hit the Exit button for leaving the program there comes an error at this line:</p> <pre><code>private void Form1_FormClosing(object sender, FormClosingEventArgs e) { xdoc.Load(path + "\\save.xml"); } </code></pre> <p>"The root element is missing" comes up. Does someone know this error and can give me a hint?</p> <p>EDIT: For <code>btnExit_Click</code> I use this code:</p> <pre><code>private void btnExit_Click(object sender, EventArgs e) { this.Close(); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload