使用XmlWriter附加到XML文件
本文关键字:XML 文件 XmlWriter 使用 | 更新日期: 2023-09-27 18:23:37
我使用XmlDocument
和XmlWriter
将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
或
使用XPath和XmlDocument(C#)操作XML数据
或
文章:如何附加到大型XML文件
我认为你需要像这个一样将节点附加到你的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>
原始帖子:附加在xml文档中