2012-02-08 38 views
7

Cảm ơn gợi ý trước đó để sử dụng "XMLWriter", mọi lúc nó tạo tệp xml mới, vì vậy tôi đã sử dụng xmldoc để tải tệp xml rồi thêm vào tệp đó, đây là mã của tôi nhưng nó ném ngoại lệ nói " Tài liệu này đã có nút 'DocumentElement'. "Nối xml file bằng cách sử dụng 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(); 
      } 

đây là test.xml mẫu của tôi

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

Am cố gắng thêm trong xml như dưới đây

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

Cảm ơn trước

+0

là nó hữu ích không? ................. –

+0

Tuyệt đối, cảm ơn rất nhiều ví dụ, tôi chưa sửa đổi, tôi sẽ sao t viết một cái bây giờ. tôi sẽ đăng mã trở lại đây. Cảm ơn một lần nữa – Usher

Trả lời

4

Để chơi với dữ liệu XML nếu bạn đang sử dụng .net phiên bản 3.5 của nó tốt hơn cho người dùng LINQ to XML.

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

hay

Manipulate XML data with XPath and XmlDocument (C#)

HOẶC

Điều: How to Append to a Large XML File

tôi thnik bạn cần phải thêm nút để xmldoc của bạn uemnt như thế này

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

Bạn cần phải làm một cái gì đó như thế này

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

Các result'll được như thế:

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

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

orignal bài: Append in xml document

Các vấn đề liên quan