将元素追加到xml c#.net中

时间:2012-08-13 12:35:50

标签: c# .net xml

我已经通过以下代码编写了xml

 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>

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我不知道你想在哪里添加下一个节点,但我想你想保留你发布的XML文件的结构。如果是这种情况,并扩展Jon Skeet的答案,你可以用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");