所以我有这种XML文件:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <Project1>
 <Students>
   <Student>
     <name>test2</name>
     <studentnum>01</studentnum>
   </Student>
 </Students>
</Project1>
</root>


要将新的Student添加到此XML文件,请使用以下代码(C#)

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("datastorage.xml"));
XmlElement Student = doc.CreateElement("Student");

XmlElement name = doc.CreateElement("name");
XmlText xmlName = doc.CreateTextNode(txtStudentName1.Text);

XmlElement studentnum = doc.CreateElement("studentnum");
XmlText xmlStudentnum = doc.CreateTextNode(txtStudentNum1.Text);

name.AppendChild(xmlName);
studentnum.AppendChild(xmlStudentnum);

Student.AppendChild(name);
Student.AppendChild(studentnum);

doc.DocumentElement.AppendChild(Student);

doc.Save(Server.MapPath("datastorage.xml"));


但是问题是,它将新学生添加到根目录,而不是Project1 / Students父项。
我该怎么做呢?

我已经看到了XmlTextWriter的解决方案,但是在4.5中不再包括了。

最佳答案

我发现使用Linq To Xml更容易

var xDoc = XDocument.Load(filename);
xDoc.Descendants("Project1").Descendants("Students")
    .First()
    .Add(new XElement("Student",
                new XElement("name","test3"),
                new XElement("studentnum","03")));

xDoc.Save(filename);


输出:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Project1>
    <Students>
      <Student>
        <name>test2</name>
        <studentnum>01</studentnum>
      </Student>
      <Student>
        <name>test3</name>
        <studentnum>03</studentnum>
      </Student>
    </Students>
  </Project1>
</root>

关于c# - 将新 child 添加到现有 child ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25772160/

10-10 06:17