无法使用LINQ在xml中持久保存新添加的标记
本文关键字:新添加 添加 保存 LINQ xml | 更新日期: 2023-09-27 18:00:35
我有以下xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- New XML document created with EditiX XML Editor (http://www.editix.com) at Tue Mar 18 22:41:05 IST 2014
-->
<html xsi:NamespaceSchemaLocation="http://www.w3.org/1999/xhtml DM_Project.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title>title1</title>
</head>
<body>
<fragment name="heading" id="heading1">
<h1>Heading 1</h1>
</fragment>
</body>
</html>
我正在使用LINQ向我的xml文件添加另一个片段标记,它是:
XDocument xdocument = XDocument.Load("C:''Users''Administrator''Desktop''DM_Project.xml");
var id = "heading3";
var name="heading";
var content = "This is the data part";
var temp = xdocument.Descendants("fragment").First();
temp.Parent.Add(new XElement("fragment", content, new XAttribute("id", id), new XAttribute("name", name)));
var temp1 = xdocument.Descendants("fragment");
Console.WriteLine(temp1);
查询结果为:
<fragment name="heading" id="heading1">
<h1>Heading 1</h1>
</fragment>
<fragment id="heading3" name="heading">This is the data part</fragment>
如果可以观察到添加了一些id为"heading3"的片段标签。但是,如果再次尝试提取片段标签,请使用以下查询:
XDocument xdocument = XDocument.Load("C:''Users''Administrator''Desktop''DM_Project.xml");
var temp = xdocument.Descendants("fragment");
Console.WriteLine(temp);
结果是:
<fragment name="heading" id="heading1">
<h1>Heading 1</h1>
</fragment>
缺少新添加的标记。如何使数据持久?我是不是遗漏了什么?或者,整个方法本身就是错误的?
我正在使用LINQPad来测试我的查询。
谢谢。
您没有将文档保存回文件。完成编辑后,请调用XDocument。保存:
string path = @"C:'Users'Administrator'Desktop'DM_Project.xml";
XDocument xdocument = XDocument.Load(path);
// modify document
xdocument.Save(path);
下次执行代码(即加载文档并查询它)时,会出现新元素。