2012-08-13 50 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