感谢早先建议使用“
XMLWriter”,每次创建新的xml文件,所以我使用xmldoc加载xml文件然后追加到该文件中,这是我的代码,但它抛出异常说“这个文档已经有’DocumentElement’节点.”
//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(); }
这是我的示例test.xml
<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>
我试图像下面的xml一样追加
<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>
提前致谢
解决方法
要使用.net版本3.5,要使用XML数据,最好是用户
LINQ to XML.
http://www.codeproject.com/Articles/24376/LINQ-to-XML
要么
Manipulate XML data with XPath and XmlDocument (C#)
要么
文章:How to Append to a Large XML File
我想你需要像这样将节点附加到你的xmldocuemnt
//add to elements collection doc.DocumentElement.AppendChild(node);
你需要做这样的事情
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");
结果就是这样:
</USERS> <User> <UserName>Buggaya</UserName> <Email>Buggaya@gmail.com</Email> </User> </USERS>
orignal post:Append in xml document