精通LINQ--11.4.3 修改XML文件中的元素

原文地址:https://blog.csdn.net/linqmail/article/details/2341575

使用LINQ to XML还可以修改XML文件中的元素。下面的实例代码使用LINQ to XML修改了Books.xml文件中的指定的元素。修改元素之后,并将Books.xml文件的内容显示在网页中。具体步骤如下。
(1)将Books.xml文件的访问地址转换为物理地址。
(2)使用XElement类的Load()方法读取Books.xml文件的内容,并创建为xe实例。
(3)使用LINQ查询ID属性的值为“104”的名称为“Book”的元素,查询结果保存为element变量。
(4)获取element变量中的第一个元素,并保存为first。
(5)把first元素的ID属性的值修改为“106”。
(6)将first元素的子元素全部替换为新的子元素及其值。
(7)调用Save()方法重新保存xe实例保存为Books.xml文件。
(8)在网页显示xe实例的内容,即Books.xml文件的内容。
(9)设置网页的输出格式为“text/xml”,并中止网页的输出操作。
private void UpdateXmlElement()
         {///导入XML文件
                   string xmlFilePath = Server.MapPath("Data/Books.xml");
                   XElement xe = XElement.Load(xmlFilePath);
                   ///查找被替换的元素
                   IEnumerable element = from e in xe.Elements("Book")
                                                                                             where e.Attribute("ID").Value == "104"
                                                                                             select e;  
                   ///替换为新元素,并保存
                   if (element.Count() > 0)
                   {
                            XElement first = element.First();
                            ///设置新的属性
                            first.SetAttributeValue("ID","106");
                            ///替换新的节点
                            first.ReplaceNodes(
                                     new XElement("No","0006"),                      ///添加元素No
                                     new XElement("Name","Book 0006"),              ///添加元素Name
                                     new XElement("Price","600"),                     ///添加元素Price
                                     new XElement("Remark","This is a book 0006.")     ///添加元素Remark
                                     );
                   }
                   xe.Save(xmlFilePath);
                   ///显示XML文件的内容
                   Response.Write(xe);
                   ///设置网页显示的形式为XML文件
                   Response.ContentType = "text/xml";
                   Response.End();
         }
Sample_11项目中的OperateXML.aspx页面测试了上述实例代码(UpdateXmlElement()函数),测试结果如图所示。
---------------------
作者:linqmail
来源:CSDN
原文:https://blog.csdn.net/linqmail/article/details/2341575
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(c#,XML,linq)