2012-08-13 77 views
0

我有寫通過下面的代碼的XML作爲追加在XML C#.NET元素

if (!File.Exists("d:\\s.xml")) 
{  
    XmlTextWriter textWriter = new XmlTextWriter("d:\\s.xml", null); 
    textWriter.WriteStartDocument(); 
    textWriter.WriteStartElement("node");  
    textWriter.WriteStartElement("zone");  
    textWriter.WriteStartElement("dt");  
    textWriter.WriteStartElement("Mn"); 
    textWriter.WriteString("m1"); 
    textWriter.WriteEndElement();  
    textWriter.WriteStartElement("Dist"); 
    textWriter.WriteString("Colony"); 
    textWriter.WriteEndElement(); 
    textWriter.WriteEndElement(); 
    textWriter.WriteEndDocument(); 
    textWriter.Close(); 
} 

這給輸出

<?xml version="1.0"?> 
<Node> 
    <Zone> 
     <Dt> 
      <mn>m1</mn> 
      <Dist>Colony</Dist> 
     </Dt> 
    </Zone> 
</Node> 

現在我需要追加以下XML已經存在xml文件

<Dt1> 
    <mn>m1</mn> 
    <Dist>Colony</Dist> 
</Dt1> 
+1

'我已經嘗試了許多樣本而不是succeed.'那些是什麼'samples'? – 2012-08-13 12:37:39

+3

爲什麼你特別使用'XmlTextWriter'?使用它比將現有文檔加載到LINQ to XML,編輯和保存要困難得多。 – 2012-08-13 12:38:31

+0

@JonSkeet你必須這樣做只有 – GowthamanSS 2012-08-13 12:39:36

回答

2

我會回答使用Linq2Xml

var xml = new XElement("Node", 
       new XElement("Zone", 
         new XElement("Dt", 
           new XElement("mn1", "m1"), 
           new XElement("Dist", "Colony") 
          ) 
        ) 
       ); 

var str1 = xml.ToString(); 

xml.Descendants("Zone") 
    .First() 
    .Add(new XElement("Dt1", 
       new XElement("mn1", "m1"), 
       new XElement("Dist", "Colony"))); 

var str2 = xml.ToString(); 

xml.Save(filename); 
+0

但是OP想在已經創建的文件中添加它。 – 2012-08-13 12:48:45

+0

然後用'XElement.Load'替換第一部分。我只是想展示如何使用Linq2Xml來形成一個xml – 2012-08-13 12:52:41

+0

在這種情況下,從我+1。 – 2012-08-13 12:53:21

0

我不太清楚你想在哪裏添加下一個節點,但我的猜測是你想保留你發佈的XML文件的結構。如果是這樣的話,擴大喬恩斯基特的答案,你可以做到這一點的XElement:

var zone = new XElement(
      "Zone", 
      new XElement(
       "Dt", 
       new XElement("Mn", "m1"), 
       new XElement("Dist", "Colony"))); 

     var xml = new XElement("Node", zone); 

     // append new nodes here 
     zone.FirstNode.AddAfterSelf(
      new XElement(
       "Dt", 
       new XElement("Mn", "m1"), 
       new XElement("Dist", "Colony"))); 

     // save file 
     xml.Save("d:\\s.xml"); 
+0

起初,我們在第二次寫入xml,我需要添加新的標籤它它 – GowthamanSS 2012-08-13 13:07:24