无法使用C#在子元素内创建带有子元素的xml文件

时间:2019-07-06 18:29:11

标签: c# linq-to-xml

我希望创建一个以“ Package”作为根节点的xml文件,“ types”是其子节点,进一步的“ members”是“ types”的子节点。另一个“名称”节点,将成为“成员”节点的同居节点。

XDocument doc = new XDocument(new XElement("Package"));

            foreach (var group in componentsGroupedByType)
            {
                 doc.Root.Add(new XElement("types"));

                    foreach (var user in group)
                    {
                        doc.Root.Add(new XElement("members", user.Item2));
                    }
                 doc.Root.Add(new XElement("name", group.Key));
            }

预期输出:

<Package>
   <types>
     <members>xyz</members>
     <members>xyz</members>
     <name>abc</name>
   </types>

   <types>
     <members>xyz</members>
     <members>xyz</members>
     <name>abc</name>
   </types>
</Package>

1 个答案:

答案 0 :(得分:2)

应该将<members><name>元素添加到您创建的<types>元素中,而不是文档根目录。

执行此操作:

var doc = new XDocument(
    new XElement("Package",
        from g in componentsGroupedByType
        select new XElement("types",
            from u in g
            select new XElement("members", u.Item2),
            new XElement("name", u.Key)
        )
    )
);