使用XmlWriter附加现有XML文件

我使用以下代码创建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”的值,并且可以随时输入这些值,当然在现有的情况下。


HUH函数
浏览 294回答 3
3回答

摇曳的蔷薇

终于我成功了:)if (!File.Exists("Test.xml")){&nbsp; &nbsp;XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();&nbsp; &nbsp;xmlWriterSettings.Indent = true;&nbsp; &nbsp;xmlWriterSettings.NewLineOnAttributes = true;&nbsp; &nbsp;using (XmlWriter xmlWriter = XmlWriter.Create("Test.xml", xmlWriterSettings))&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; xmlWriter.WriteStartDocument();&nbsp; &nbsp; &nbsp; xmlWriter.WriteStartElement("School");&nbsp; &nbsp; &nbsp; xmlWriter.WriteStartElement("Student");&nbsp; &nbsp; &nbsp; xmlWriter.WriteElementString("FirstName", firstName);&nbsp; &nbsp; &nbsp; xmlWriter.WriteElementString("LastName", lastName);&nbsp; &nbsp; &nbsp; xmlWriter.WriteEndElement();&nbsp; &nbsp; &nbsp; xmlWriter.WriteEndElement();&nbsp; &nbsp; &nbsp; xmlWriter.WriteEndDocument();&nbsp; &nbsp; &nbsp; xmlWriter.Flush();&nbsp; &nbsp; &nbsp; xmlWriter.Close();&nbsp; &nbsp;}}else{&nbsp; &nbsp;XDocument xDocument = XDocument.Load("Test.xml");&nbsp; &nbsp;XElement root= xDocument.Element("School");&nbsp; &nbsp;IEnumerable<XElement> rows = root.Descendants("Student");&nbsp; &nbsp;XElement firstRow= rows.First();&nbsp; &nbsp;firstRow.AddBeforeSelf(&nbsp; &nbsp; &nbsp; new XElement("Student",&nbsp; &nbsp; &nbsp; new XElement("FirstName", firstName),&nbsp; &nbsp; &nbsp; new XElement("LastName", lastName)));&nbsp; &nbsp;xDocument.Save("Test.xml");}

MM们

让我给你一个建议。创建xml文件时,请给学生一个唯一的ID,如下所示:// to store the id variable, if you create more than one student you can increase itcount = 0;&nbsp;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){&nbsp; &nbsp;string firstName = txtFirstName.Text;&nbsp; &nbsp;string lastName = txtLastName.Text;&nbsp; &nbsp;XElement first = new XElement("FirstName", firstName);&nbsp; &nbsp;XElement last = new XElement("LastName", lastName);&nbsp; &nbsp;student.Add(first);&nbsp; &nbsp;student.Add(last);&nbsp; &nbsp;xDoc.Save("Test.xml");}
打开App,查看更多内容
随时随地看视频慕课网APP