//Добавляе 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 cc = ((XElement) xElement.PreviousNode.PreviousNode).Value; var pointer = GetElementAt(xElement, "Modifikators"); //Указатель на Modifikators //if (pointer == 0) continue; //Читаем модификаторы до упора, выходим по исключению 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, Select = false}); pointer++; } } catch { } folder.AddComponent(item); } }
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); } }
private bool GetChildren(string id, IPublicComposite folder) { var childmenu = _doc.Descendants("ItemName") .Where(z => { var xElement = z.Element("IdItemName"); return xElement != null && xElement.Value == id; }); var elements = childmenu as IList<XElement> ?? childmenu.ToList(); var itemName = elements.Elements("ItemName").Elements("Наименование"); var rootDish = elements.Elements("ItemChildren").Elements("Наименование"); //Добавляем блюдо Item к Folder AddItemToFolder(rootDish, folder); var enumerable = itemName as XElement[] ?? itemName.ToArray(); //Если это Folder if (enumerable.Any()) AddFolderToFolder(enumerable, folder); return false; }
private bool GetChildren(string item, IPublicComposite folder) { var rootElement = _doc.Descendants("ItemChildren").Descendants("Наименование") .Nodes().Where(z => z.ToString() == item); if (rootElement.Count() != 0) { return true; } var childmenu = _doc./*Elements("ButtonName").*/Descendants("ItemName").Where(z => { var flag = false; foreach (var h in z.Descendants("Наименование").Nodes().Where(h => h.ToString() == item)) { flag = true; } return flag; }); var xElements = childmenu as IList<XElement> ?? childmenu.ToList(); var element = xElements.LastOrDefault(); if (element == null) return false; //Папка var itemName = element.Elements("ItemName").Elements("Наименование"); //Блюдо var rootDish = element.Elements("ItemChildren").Elements("Наименование"); //Добавляем блюдо Item к Folder AddItemToFolder(rootDish, folder); var enumerable = itemName as XElement[] ?? itemName.ToArray(); //Если это Folder if (enumerable.Any()) AddFolderToFolder(enumerable, folder); return false; }