我需要一些帮助来添加一个元素,现在我正在做:
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>
));