使用XmlWriter附加现有XML文件

 mobiledu2502922957 发布于 2023-02-06 16:08

我使用以下代码来创建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();
 }

我需要动态插入节点,创建以下结构:



   
      David
      Smith
   
   ...
   
      David
      Smith
   
   ...

我该怎么做?应从键盘读取"FirstName"和"LastName"的值,并且可以随时输入值,当然在现有值下.

2 个回答
  • 你可以使用Linq Xml

    XDocument doc = XDocument.Load(xmlFilePath);
    XElement school = doc.Element("School");
    school.Add(new XElement("Student",
               new XElement("FirstName", "David"),
               new XElement("LastName", "Smith")));
    doc.Save(xmlFilePath);
    

    编辑

    如果要将Element添加到Existing <Student>,只需添加一个Attribute

    school.add(new XElement("Student",
               new XAttribute("ID", "ID_Value"),
               new XElement("FirstName", "David"),
               new XElement("LastName", "Smith")));
    

    然后,您可以<Student>通过搜索 - > get - > add 将更多详细信息添加到Existing

    XElement particularStudent = doc.Element("School").Elements("Student")
                                    .Where(student => student.Attribute("ID").Value == "SearchID")
                                    .FirstOrDefault();
    if(particularStudent != null)
        particularStudent.Add(new XElement("<NewElementName>","<Value>");
    

    2023-02-06 16:10 回答
  • 终于我成功了:)

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

    2023-02-06 16:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有