我有一个包含学校元素的XML文件。
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ConfigurationManager.AppSettings.Get("studentFile"));
XmlNode student = xmlDoc.CreateElement("Student");
XmlNode name = xmlDoc.CreateElement("Name");
name.InnerText = tBName.Text;
student.AppendChild(name);
XmlNode grade = xmlDoc.CreateElement("Grade");
grade.InnerText = tBGrade.Text;
student.AppendChild(grade);
XmlNode sex = xmlDoc.CreateElement("Sex");
sex.InnerText = tbSex.Text;
student.AppendChild(sex);
XmlNode age = xmlDoc.CreateElement("Age");
age.InnerText = tBAge.Text;
student.AppendChild(age);
XmlNode picture = xmlDoc.CreateElement("Picture");
picture.InnerText = tBPicture.Text;
student.AppendChild(picture);
xmlDoc.DocumentElement.AppendChild(student);
xmlDoc.Save(ConfigurationManager.AppSettings.Get("studentFile"));
}
我想随同Windows窗体一起添加其他学生。这是我的代码。目前,它们是在“课堂”标记之后添加的,我希望在“学生”节点中添加它们。
kubectl
答案 0 :(得分:1)
您可以找到“学生”节点
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ConfigurationManager.AppSettings.Get("studentFile"));
XmlElement root = xmlDoc.DocumentElement;
XmlNode node = root.SelectSingleNode("//Classrooms/Classroom/Students");
然后最后,您可以将新节点附加到该节点上
node.AppendChild(student);
//xmlDoc.DocumentElement.AppendChild(student);
xmlDoc.Save(ConfigurationManager.AppSettings.Get("studentFile"));
答案 1 :(得分:1)
使用LinqtoXml
,这很容易做到。强烈建议使用Linq To XmL:
try
{
XDocument xmlDoc = XDocument.Load("StudentDoc.xml"));
xmlDoc.Element("Students").Add(
new XElement("Student",
new XElement("Name", "Peter"),
new XElement("Grade", 10.0),
new XElement("Sex", "Male")));
xmlDoc.Save("StudentDoc.xml"));
}
catch{}
然后您可以执行不同的操作,例如排序:
IEnumerable<decimal> names =
from student in root.Elements("Students")
orderby student.Name
select student.Name;
foreach (string name in names)
Console.WriteLine(name);