protected void AddFolderToFolder(IEnumerable<XElement> list, IPublicComposite folder) { foreach (var xElement in list) { var childrenfolder = new Folder() { Id = ((XElement) xElement.PreviousNode).Value, IdFather = folder.Id, Name = xElement.Value, Price = "This folder!" }; folder.AddComponent(childrenfolder); GetChildren(((XElement)xElement).Value, childrenfolder); } }
//Добавляе Item с модификаторами к Folder private void AddItemToFolder(IEnumerable<XElement> elements, IPublicComposite folder) { foreach (var xElement in elements) { if (xElement.Parent == null) continue; var item = new Item() { Id = ((XElement) xElement.PreviousNode.PreviousNode).Value, IdFather = xElement.Parent.Descendants("IdItemName").First().Value, Name = xElement.Value, Price = ((XElement) xElement.PreviousNode).Value, ParentComponent = folder }; var pointer = GetElementAt(xElement, "Modifikators"); //Указатель на Modifikators //Читаем модификаторы до упора, выходим по исключению try { while (xElement.Parent.Elements().ElementAt(pointer).Name == "Modifikators") { item.Modifiers.Add( xElement.Parent.Elements().ElementAt(pointer).Attributes("МодификаторИД").First().Value, new Modifier(){ Name = xElement.Parent.Elements().ElementAt(pointer).Attributes("Модификатор").First().Value, Id = xElement.Parent.Elements().ElementAt(pointer).Attributes("МодификаторИД").First().Value, Select = false, Required = xElement.Parent.Elements().ElementAt(pointer).Attributes("Обязательный").First().Value }); pointer++; } } catch { } folder.AddComponent(item); } }