类包含同一类的IEnumerable <class>,未知数量的childelemnts

时间:2016-03-11 14:03:53

标签: c# xml recursion ienumerable

作为重复发布的链接在我的情况下并没有真正帮助:但是这个答案是 Read a XML tree structure recursively in a List<T> with children lists<T>

另外,我确实提到我不知道我的问题的关键词,是递归,所以我当时找不到合适的答案。

在下面的XML示例中,我们有一个条目。一个条目可以包含另一个条目,该条目可以包含另一个条目,依此类推。

<entry name="sales" label="Sales">
      <entry name="discounts" label="Discounts" entity="sales_discount" />
      <entry name="discount_add" label="New Discount" entity="sales_discount" view="add" />
      <entry name="users" label="Users" entity="sys_user" />
</entry>

c#中的等价物

public interface IMenuEntry
{
    string Name { get; set; }
    string Label { get; set; }
    IEntity Entity { get; set; }
    ViewType View { get; set; }
    IEnumerable<IMenuEntry> MenuEntries { get; set; }
}

我知道如何将xml加载并保存到.net并返回。

我的问题在于实施。如果我们事先知道一个条目只能包含一个其他条目,那么每个循环都会做一个简单的事情。

var entries = new List<MenuEntry>();    
foreach (var xMainEntry in xMainEntries)
{
    var xMainEntryName = xMainEntry.Attribute("name").Value;
    var xMainEntryLabel = xMainEntry.Attribute("label").Value;
    var mainEntry = new MenuEntry() { Label = xMainEntryLabel, Name = xMainEntryName};             
}

但是,我不知道相同类型的childelements的数量,所以我不知道我必须做多少次xMenu.Elements("entry").Elements("entry).Elements("entry"),我怎么能继续循环这些元素并构建在c#中使用相同数量的级别来构建结构(显然我将需要另外一种方法将对象保存到xml中。但是我想,如果我知道如何以一种方式执行它,我可以做到另一个四处走走

0 个答案:

没有答案