使用Linq难以附加到XML文件

时间:2013-05-06 15:26:56

标签: c# xml linq append

我有一个看起来像

的XML文档
<Settings>
    <Config>
       <type>stuff</type>
       <length>stuff</length>
        <ID>1</ID>
     </Config>
</Settings>

我试图使用

附加到它
Document loadedDoc = XDocument.Load (file);
loadedDoc.Element("Settings").Add(new XElement("Config"),
                                  new XElement("type", "stuff"),
                                  new XElement("length", "stuff"),
                                  new XElement("ID", "2"));
loadedDoc.Save(file);

当我这样做时,我得到的是

<Settings>
    //the other configs hidden for readability
     <Config />  <--- WHAT DO?! 0_o
     <type>stuff</type>
     <length>stuff</length>
     <ID>2</ID>
</Settings>

有更好的精通linq的人能告诉我它是什么我做错了让它创建一个像这样的空配置元素?谢谢!

3 个答案:

答案 0 :(得分:4)

您需要通过“Config”元素的构造函数添加子元素,而不是通过“Settings”构造函数:

loadedDoc.Element("Settings").Add(new XElement("Config",
                             new XElement("type", "stuff"),
                             new XElement("length", "stuff"),
                             new XElement("ID", "2")));

答案 1 :(得分:3)

那是因为您要附加到“设置”,而不是“配置”

尝试:

  loadedDoc.Element("Settings").Add(
        new XElement("Config",
                     new XElement("type", "stuff"),
                     new XElement("length", "stuff"),
                     new XElement("ID", "2")));

答案 2 :(得分:1)

试试这个

XDocument loadedDoc = XDocument.Load(file);

        loadedDoc.Element("Settings").Add(new XElement("Config"));
        loadedDoc.Element("Settings").Element("Config").Add(            
                                     new XElement("type", "stuff"),
                                     new XElement("length", "stuff"),
                                     new XElement("ID", "2"));

        loadedDoc.Save(file);