c# - xml c# 使用 Linq 添加元素到 Xml

标签 c# xml linq

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

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() 会更清楚,这样如果没有这样的元素,that 就会失败,而不是返回

关于c# - xml c# 使用 Linq 添加元素到 Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732755/

相关文章:

c# - EF6 数据库初始化错误

xml - XPath用于选择名称并按子属性进行过滤

c# - 如何将多个 MethodCallExpressions 加入一个 Expression?

C# Select 查询不修改外部变量

c# - 将数据表中选定的列绑定(bind)到数据网格中

c# - 保存前预览 PDF

xml - 在 Ruby 中解析 XML 文档

java - 不能在不同的文件中使用另一个类的布局

C#在LINQ中左加入

c# - 多上下文内存数据库