Exemplo n.º 1
0
 public ItemDish MenuXmlToList(XElement doc)
 {
     //Блюда лежащие в корне МЕНЮ
     var rootDish = doc.Elements("ButtonName").Elements("ItemName").Elements("ItemChildren")
          .Elements("Наименование");
     //ПАПКИ с блюдами
     var rootMenu = doc.Elements("ButtonName").Elements("ItemName").Elements("ItemName")
         .Elements("Наименование");
     //Добавляем корневые блюда
     AddDishToList(rootDish);
     //Добавляем папки и детей
     foreach (var p in rootMenu)
     {
         var item = new ItemDish
         {
             Price = "This folder!",
             Name = p.Value,
             Id = ((XElement)p.PreviousNode).Value
         };
         Menu.Children.Add(item);
         GetChildren(((XElement)p).Value, doc);
     }
     return Menu;
 }
Exemplo n.º 2
0
 //Получаем "Наименование" из нижнего окна и ищем потомков
 private void GetChildren(string item, XElement doc)
 {
     //Вырезаем дерево с ВЕРШИНОЙ Item
     var childrens = doc.Elements("ButtonName").Elements("ItemName").Descendants("ItemName").Where(z =>
     {
         var flag = false;
         foreach (var h in z.Descendants("Наименование").Nodes().Where(h => h.ToString() == item))
         {
             flag = true;
         }
         return flag;
     });
     //Добавляем блюда, не имеют детей
     var elements = childrens.Elements("ItemChildren").Elements("Наименование");
     AddDishToList(elements);
     //Добавляем папки
     try
     {
         elements = childrens.Last().Elements("ItemName").Elements("Наименование");
         //itemName - если есть папки - перебираем
         foreach (var p in elements)
         {
             var node = new ItemDish
             {
                 Id = ((XElement)p.PreviousNode).Value,
                 Name = p.Value,
                 IdFather = "This folder!"
             };
             Menu.Children.Add(node);
             GetChildren(p.Value, doc); //рекурсия
         }
     }
     catch (Exception)
     {
     }
 }
Exemplo n.º 3
0
 public MenuXml()
 {
     CurrentNode = new Stack<List<Item>>();
     Menu = new ItemDish();
 }
Exemplo n.º 4
0
 private void AddDishToList(IEnumerable<XElement> elements)
 {
     foreach (var p in elements)
     {
         var node = new ItemDish
         {
             Id = ((XElement)p.PreviousNode.PreviousNode).Value,
             Name = p.Value,
             Price = ((XElement)p.PreviousNode).Value,
             IdFather = p.Parent.Descendants("IdItemName").First().Value
         };
         var pointer = GetElementAt(p, "Modifikators"); //Указатель на Modifikators
         try
         {
             while (p.Parent.Elements().ElementAt(pointer).Name == "Modifikators")
             {
                 node.Modifikators.Add(p.Parent.Elements().ElementAt(pointer).Attributes("МодификаторИД").First().Value,
                     p.Parent.Elements().ElementAt(pointer).Attributes("Модификатор").First().Value);
                 pointer++;
             }
         }
         catch (Exception)
         {
         }
         Menu.Children.Add(node);
     }
 }