2012-02-08 16 views
7

Dzięki za wcześniejszą sugestię użycia "XMLWriter", za każdym razem tworzy nowy plik xml, więc użyłem xmldoc, aby załadować plik xml następnie dołączyć do tego pliku, tutaj jest mój kod, ale wyrzuca wyjątek mówiąc " Ten dokument ma już węzeł "DocumentElement". "dołącz plik xml za pomocą xmlwriter

//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(); 
      } 

tutaj jest mój przykładowy 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> 

staram się dołączyć w xml jak poniżej

<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> 

z góry dzięki

+0

jest ona pomocna? ................. –

+0

Absolutnie, bardzo dziękuję za np., Że jeszcze nie zmodyfikowałem, zamierzam zagrać piszę teraz. opublikuję kod tutaj. Dzięki jeszcze raz – Usher

Odpowiedz

4

grać z danymi XML jeśli używasz wersji .net 3.5, to lepiej dla użytkownika LINQ to XML.

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

lub

Manipulate XML data with XPath and XmlDocument (C#)

LUB

artykułu: How to Append to a Large XML File

I thnik trzeba dołączyć do węzła xmldoc uemnt jak ten

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

trzeba zrobić coś takiego

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"); 

result'll być tak:

</USERS> 
<User> 
<UserName>Buggaya</UserName> 

<Email>[email protected]</Email> 
</User> 
</USERS> 

Orignal wpis: Append in xml document

Powiązane problemy