c# – 使用xmlwriter附加xml文件

前端之家收集整理的这篇文章主要介绍了c# – 使用xmlwriter附加xml文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
感谢早先建议使用“ 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

猜你在找的C#相关文章