[英]xml c# add element with Linq to 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的应用程序根本不必关心它们之间的区别。
还要注意,如果没有任何SQUIBLIST
元素,则通过调用FirstOrDefault().Add(...)
会失败,并出现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>
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.