Add to XML file using XmlWriter

I use XmlDocument and XmlWriter to add XML to an existing file, but my attempt below raises an exception that I don't understand

This document already has a DocumentElement node.

 //Append to xml file XmlDocument doc = new XmlDocument(); doc.Load(@"c:\\test.xml"); using (XmlWriter xmlWrite = doc.CreateNavigator().AppendChild()) { xmlWrite.WriteStartElement("image name=",Name); xmlWrite.WriteElementString("width", widthValue[1]); xmlWrite.WriteElementString("Height", heightValue[1]); xmlWrite.WriteElementString("file-size", FileSizeValue[1]); xmlWrite.WriteElementString("file-format", FileFormatValue[1]); xmlWrite.WriteElementString("resolution", ResolutionValue[1]); xmlWrite.Close(); } 

here is my test.xml example

 <job-metadata> <slug>730s_Sales/CupWinner_0111</slug> <locations>Africa</locations> <primary-location>Africa</primary-location> <reporter>Leigh Sales</reporter> <genre>Current</genre> <copyright>CBS</copyright> <autopublish>true</autopublish> </job-metadata> 

I am trying to add to XML as below

 <job-metadata> <slug>730s_Sales/CupWinner_0111</slug> <locations>Africa</locations> <primary-location>Africa</primary-location> <reporter>Leigh Sales</reporter> <genre>Current</genre> <copyright>CBS</copyright> <autopublish>true</autopublish> <image name="557684_20111101-730s_SalesCupWinner_0111_80x60.jpg"> <width>80</width> <height>60</height> <file-size>7045</file-size> <file-format>JPEG Baseline</file-format> <resolution>72</resolution> <custom-name>newsthumbnail</custom-name> </image> </job-metadata> 
+7
source share
1 answer

To play with XML data, if you are using .net version 3.5, the LINQ to XML user is best.

http://www.codeproject.com/Articles/24376/LINQ-to-XML

or

Manipulate XML data using XPath and XmlDocument (C #)

OR

Article: How to add to a large XML file

I need to add node to your xmldocuemnt, like this

 //add to elements collection doc.DocumentElement.AppendChild(node); 

You need to do something like this

 XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("F:/Documents and Settings/Administrator/Desktop/Account.xml"); XmlElement subRoot=xmlDoc.CreateElement("User"); //UserName XmlElement appendedElementUsername=xmlDoc.CreateElement("UserName"); XmlText xmlTextUserName=xmlDoc.CreateTextNode(txtUsrName.Text.Trim()); appendedElementUsername.AppendChild(xmlTextUserName); subRoot.AppendChild(appendedElementUsername); xmlDoc.DocumentElement.AppendChild(subRoot); //Email XmlElement appendedElementEmail=xmlDoc.CreateElement("Email"); XmlText xmlTextEmail=xmlDoc.CreateTextNode(txtEmail.Text.Trim()); appendedElementEmail.AppendChild(xmlTextEmail); subRoot.AppendChild(appendedElementEmail); xmlDoc.DocumentElement.AppendChild(subRoot); xmlDoc.Save("F:/Documents and Settings/Administrator/Desktop/Account.xml");if(!File.Exists("F:/Documents and Settings/Administrator/Desktop/Account.xml")) { XmlTextWriter textWritter=new XmlTextWriter("F:/Documents and Settings/Administrator/Desktop/Account.xml", null); textWritter.WriteStartDocument(); textWritter.WriteStartElement("USERS"); textWritter.WriteEndElement(); textWritter.Close(); } XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("F:/Documents and Settings/Administrator/Desktop/Account.xml"); XmlElement subRoot=xmlDoc.CreateElement("User"); //UserName XmlElement appendedElementUsername=xmlDoc.CreateElement("UserName"); XmlText xmlTextUserName=xmlDoc.CreateTextNode(txtUsrName.Text.Trim()); appendedElementUsername.AppendChild(xmlTextUserName); subRoot.AppendChild(appendedElementUsername); xmlDoc.DocumentElement.AppendChild(subRoot); //Email XmlElement appendedElementEmail=xmlDoc.CreateElement("Email"); XmlText xmlTextEmail=xmlDoc.CreateTextNode(txtEmail.Text.Trim()); appendedElementEmail.AppendChild(xmlTextEmail); subRoot.AppendChild(appendedElementEmail); xmlDoc.DocumentElement.AppendChild(subRoot); xmlDoc.Save("F:/Documents and Settings/Administrator/Desktop/Account.xml"); 

The result will be like this:

 </USERS> <User> <UserName>Buggaya</UserName> <Email> Buggaya@gmail.com </Email> </User> </USERS> 

orignal post: Add to XML document

+4
source

All Articles