向XML添加第二级元素

本文关键字:二级 元素 XML 添加 | 更新日期: 2023-09-27 18:18:32

我有一个XML文件:

<uploads>
  <upload backupid="3">
    XXXXXXXXX
  </upload>
</uploads>

我如何添加一个元素(或更多)的地方XXX(给定backupid)?

<file filename="XXX">HASH-CODE</file>

我试过了:

public static void AddFileToExistingUpload(int lastUsedID, string fileName, string generatedHash)
{
    var xdoc = LoadUploadsXML();
    var element = xdoc.Elements("upload").SingleOrDefault(x => x.Attribute("backupid").Value.Equals(lastUsedID));
    element.Add(new XElement("file", generatedHash, new XAttribute("filename", fileName)));
    SaveUploadXML(xdoc);
}

但我得到的是:

类型为"System"的未处理异常。得到NullReferenceException"发生

向XML添加第二级元素

xdoc只有一个uploads元素,upload在它下面:

 var element = xdoc.Element("uploads").Elements("upload").SingleOrDefault(x => x.Attribute("backupid").Value.Equals(lastUsedID));

或插入Root:

 var element = xdoc.Root.Elements("upload").SingleOrDefault(x => x.Attribute("backupid").Value.Equals(lastUsedID));

或使用Descendants:

    var element = xdoc.Descendants("upload").SingleOrDefault(x => x.Attribute("backupid").Value.Equals(lastUsedID));