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

使用XmlWriter附加现有XML文件

使用XmlWriter附加现有XML文件

C#
HUH函数 2019-12-06 09:42:55
我使用以下代码创建XML文件:XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();xmlWriterSettings.Indent = true;xmlWriterSettings.NewLineOnAttributes = true;using (XmlWriter xmlWriter = XmlWriter.Create("Test.xml", xmlWriterSettings)){   xmlWriter.WriteStartDocument();   xmlWriter.WriteStartElement("School");   xmlWriter.WriteEndElement();   xmlWriter.WriteEndDocument();   xmlWriter.Close(); }我需要动态创建以下结构来插入节点:<?xml version="1.0" encoding="utf-8"?><School />   <Student>      <FirstName>David</FirstName>      <LastName>Smith</LastName>   </Student>   ...   <Teacher>      <FirstName>David</FirstName>      <LastName>Smith</LastName>   </Teacher>   ...</School>我该怎么做?应该从键盘上读取“ FirstName”和“ LastName”的值,并且可以随时输入这些值,当然在现有的情况下。
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

终于我成功了:)


if (!File.Exists("Test.xml"))

{

   XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();

   xmlWriterSettings.Indent = true;

   xmlWriterSettings.NewLineOnAttributes = true;

   using (XmlWriter xmlWriter = XmlWriter.Create("Test.xml", xmlWriterSettings))

   {

      xmlWriter.WriteStartDocument();

      xmlWriter.WriteStartElement("School");


      xmlWriter.WriteStartElement("Student");

      xmlWriter.WriteElementString("FirstName", firstName);

      xmlWriter.WriteElementString("LastName", lastName);

      xmlWriter.WriteEndElement();


      xmlWriter.WriteEndElement();

      xmlWriter.WriteEndDocument();

      xmlWriter.Flush();

      xmlWriter.Close();

   }

}

else

{

   XDocument xDocument = XDocument.Load("Test.xml");

   XElement root= xDocument.Element("School");

   IEnumerable<XElement> rows = root.Descendants("Student");

   XElement firstRow= rows.First();

   firstRow.AddBeforeSelf(

      new XElement("Student",

      new XElement("FirstName", firstName),

      new XElement("LastName", lastName)));

   xDocument.Save("Test.xml");

}


查看完整回答
反对 回复 2019-12-06
?
MM们

TA贡献1886条经验 获得超2个赞

让我给你一个建议。创建xml文件时,请给学生一个唯一的ID,如下所示:


// to store the id variable, if you create more than one student you can increase it

count = 0; 


xmlWriter.WriteStartElement("School");

xmlWriter.WriteAttributeString("ID",count.ToString());

xmlWriter.WriteEndElement();

然后,当您需要向该学生添加信息时,您可以获得ID,Firstname并且Lastname可以使用LINQ to XML编辑XML文件,如下所示:


int id = Convert.ToInt32(txtStudentId.Text);

XDocument xDoc = XDocument.Load("Test.xml");

XElement student = xDoc.Descendants("Student").Where(x => (string) x.Attribute("ID") == id).FirstOrDefault();


if (student != null)

{

   string firstName = txtFirstName.Text;

   string lastName = txtLastName.Text;

   XElement first = new XElement("FirstName", firstName);

   XElement last = new XElement("LastName", lastName);

   student.Add(first);

   student.Add(last);

   xDoc.Save("Test.xml");

}


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 289 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信