I have been learning C#'s XML with a project however I keep getting the InvalidOperationException. I have put the code below
XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8);
writer.WriteStartDocument(true);
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.WriteStartElement("User Info");
writer.WriteStartElement("Name");
writer.WriteString(userName);
writer.WriteEndElement();
writer.WriteStartElement("Tutor Name");
writer.WriteString(tutorName);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement("Course Data"); /*This is where the exception points to*/
foreach (UserCourse c in courses)
{
String cn = c.Name;
writer.WriteStartElement(cn);
foreach (UserUnit u in c.Units)
{
writer.WriteStartElement(u.Name.ToString());
foreach (UserObjective o in u.Objectives)
{
writer.WriteStartElement(o.Name.ToString());
writer.WriteString(o.Score.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
Perhaps someone can see what I am doing wrong. I appreciate any help!
XML Element names cannot contain spaces.
Refer to XML Naming Rules .
Also it seems like you should have one root element. Like CourseData
should be inside UserInfo
.
Checkout Fiddle
Is "User Info" and "Course Data" is a different entity. If it is so, I think you may encapsulate them in one entity.
XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8);
writer.WriteStartDocument(true);
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.WriteStartElement("My Entity"); /* It is a biggest one*/
writer.WriteStartElement("User Info");
writer.WriteStartElement("Name");
writer.WriteString(userName);
writer.WriteEndElement();
writer.WriteStartElement("Tutor Name");
writer.WriteString(tutorName);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement("Course Data"); /*This is where the exception points to*/
foreach (UserCourse c in courses)
{
String cn = c.Name;
writer.WriteStartElement(cn);
foreach (UserUnit u in c.Units)
{
writer.WriteStartElement(u.Name.ToString());
foreach (UserObjective o in u.Objectives)
{
writer.WriteStartElement(o.Name.ToString());
writer.WriteString(o.Score.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.