xml c#将带有Linq的元素添加到xml中



我需要一些帮助来添加一个元素,现在我正在做:

XDocument xDoc = XDocument.Load(testFile);
xDoc.Descendants("SQUIBLIST")
    .FirstOrDefault()
    .Add(new XElement("Sensor", 
            new XAttribute("ID", id + 1), 
            new XAttribute("Name", "Squib" + (id + 1).ToString()), 
            new XAttribute("Used", "True")));
xDoc.Save(testFile);

我得到(例如):

   <Sensor ID="26" Name="Squib26" Used="True" />

我想要的是这个:

   <Sensor ID="26" Name="Squib26" Used="True"></Sensor>

我找不到办法。豌豆给了我线索。谢谢

您可以包含一个空字符串来强制它添加一个空文本节点:

new XElement("Sensor", 
    new XAttribute("ID", id + 1), 
    new XAttribute("Name", "Squib" + (id + 1).ToString()),
    new XAttribute("Used", "True"),
    "")

然而,你应该考虑一下为什么你真的需要这个。通常,读取XML的应用程序根本不应该关心差异。

还要注意,通过调用FirstOrDefault().Add(...),如果没有任何SQUIBLIST元素,您将使用NullReferenceException失败。至少使用First()会更清楚,这样,如果没有这样的元素,的可能会失败,而不是返回null

试试这个:

 xDoc.Descendants("SQUIBLIST")
      .FirstOrDefault()
      .Add(
             new XElement("Sensor", 
             new XAttribute("ID", id + 1), 
             new XAttribute("Name", "Squib" + (id + 1).ToString()), 
             new XAttribute("Used", "True")
             ,"" //<-- this will represent the value of <Sensor>
));

相关内容

  • 没有找到相关文章

最新更新