2011-06-07 15 views
14

मैं एक फ़ाइल के अंत में एक नए नोड जोड़ रहा है, लेकिन मैं एक लेखन त्रुटि मिलती है:इस दस्तावेज़ को पहले से ही एक 'DocumentElement' नोड

This document already has a 'DocumentElement' node.

मेरे कोड:

XmlDocument doc = new XmlDocument(); 
doc.Load(directory); 
XmlNode refElem = doc.LastChild; // Last node 

foreach (MoneyEnter myList in list) 
{ 
    XmlElement entryElement = doc.CreateElement("entry"); 
    entryElement.SetAttribute("type", myList.TypeAmount); 

    XmlElement amountElement = doc.CreateElement("amount"); 
    amountElement.InnerText = Convert.ToString(myList.Amount); 

    XmlElement dateElement = doc.CreateElement("date"); 
    dateElement.InnerText = Convert.ToString(myList.Date); 

    XmlElement descriptionElement = doc.CreateElement("description"); 
    XmlCDataSection cdataDescription = doc.CreateCDataSection(myList.Description); 
    descriptionElement.AppendChild(cdataDescription); 

    XmlElement categoryElement = doc.CreateElement("category"); 
    categoryElement.InnerText = myList.Category; 

    entryElement.AppendChild(amountElement); 
    entryElement.AppendChild(dateElement); 
    entryElement.AppendChild(descriptionElement); 
    entryElement.AppendChild(categoryElement); 
    doc.InsertAfter(entryElement, refElem); //add new node in end of file 
} 
doc.Save(directory); 

मेरे एक्सएमएल फ़ाइल:

<?xml version="1.0" encoding="utf-8" ?> 
<entries> 
    <entry type="debit"> 
     <amount>5</amount> 
     <date>01.01.0001 0:00:00</date> 
     <description>ffvfd</description> 
     <category>fdvfvf</category> 
    </entry> 
    <entry type="debit"> 
     <amount>5</amount> 
     <date>01.01.0001 0:00:00</date> 
     <description>fvfv</description> 
     <category>fvfdvfd</category> 
    </entry> 
    <entry type="debit"> 
     <amount>5</amount> 
     <date>01.01.0001 0:00:00</date> 
     <description>fv gfv</description> 
     <category>dscdcd</category> 
    </entry> 
    <entry type="debit"> 
     <amount>5</amount> 
     <date>01.01.0001 0:00:00</date> 
     <description>vfvfv</description> 
     <category>cfcfc</category> 
    </entry> 
    <entry type="debit"> 
     <amount>7</amount> 
     <date>01.01.0001 0:00:00</date> 
     <description>gfbvgv</description> 
     <category>gfbgfb</category> 
    </entry> 
</entries> 

उत्तर

41

आप

XmlNode refElem = doc.DocumentElement.LastChild; 
का उपयोग करना चाहिए

और

doc.DocumentElement.InsertAfter(entryElement, refElem); 

संपादित

तुम भी

doc.DocumentElement.AppendChild(entryElement); 

उपयोग कर सकते हैं इस मामले refElem की जरूरत नहीं है में।

+0

धन्यवाद, काम करता है, लेकिन एक नया नोड जोड़ता है क्यों फ़ाइल के अंत में नहीं? – dev85

+1

आप संदर्भित तत्व की आवश्यकता के बिना 'doc.DocumentElement.AppendChild (entryElement)' का भी उपयोग कर सकते हैं। – DanielB

+0

अंडेस्टैंड, – dev85

संबंधित मुद्दे