1

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

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>

我找不到办法。皮斯给我一个线索。谢谢!

4

2 回答 2

4

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

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

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

另请注意,如果没有任何元素,通过调用FirstOrDefault().Add(...)您将失败。如果没有这样的元素,至少使用起来会更清晰,而不是返回。NullReferenceExceptionSQUIBLISTFirst()null

于 2013-02-06T15:36:44.540 回答
2

尝试这个:

 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>
));
于 2013-02-06T15:38:11.857 回答