为了账号安全,请及时绑定邮箱和手机立即绑定

将节点附加到 XML 文件

将节点附加到 XML 文件

C#
温温酱 2022-06-12 10:23:12
我有一个包含学校元素的 XML 文件。 <Classrooms>  <Classroom ID="Mrs.S">   <Students>    <Student>     <Name> Billy Blue </Name>     <Grade> 1 </Grade>     <Sex> Male </Sex>     <Age> 7 </Age>     <Picture> c:/School/Students/BillyBlue </Picture>   </Student>  </Students> </Classroom></Classrooms>我想在使用 Windows 表单时附加不同的学生。这是我的代码。它们目前被添加到教室标签之后,我希望它们在学生节点中。    {        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"));    }
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

有了LinqtoXml,这很容易做到。强烈建议使用Linq To XmL:


https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/adding-elements-attributes-and-nodes-to-an-xml-tree


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); 


查看完整回答
反对 回复 2022-06-12
?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以找到“学生”节点


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"));


查看完整回答
反对 回复 2022-06-12
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号