0

我已经通过以下代码编写了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>
4

2 回答 2

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);
于 2012-08-13T12:47:13.357 回答
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");
于 2012-08-13T12:54:35.407 回答