XDocument向XML文件添加新文档声明

时间:2017-04-11 15:57:42

标签: c# xml linq

所以我有这个代码块,它是If / Else的一部分,如果写入的文件已经存在,它应该附加到文档中。然而,它似乎是添加一个新的xml声明和根元素,就好像它是一个新文件。代码如下所示:

<div class="woocommerce-variation-availability" />

在这个块的第二遍中,它错误地说明文件中间有一个无效的xml声明.....看起来像这样:

variation.php

我怀疑我没有正确使用LINQ for XML。

1 个答案:

答案 0 :(得分:2)

您将XML附加到同一文件而不是覆盖文件。

修复选项:

  • 寻找文件回到起点
  • 重新打开文件

     // load and close stream  
     XDocument xD;
     using(var fs = new FileStream(configFile, FileMode.Open))
     {
        xD = XDocument.Load(fs);
     }
    
     // modify document
     XElement root = xD.Element("Store");
     root.Add(
          new XElement("template", new XElement("filePath", tmp.TempPath),
          new XElement("Name", tmp.TempName),
          new XElement("description", tmp.TempDesc)));
    
     // open stream again and save XML
     using(var fs = new FileStream(configFile, FileMode.Open))
     {
        xD.Save(fs);
     }