Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2011, 10:45   #1
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию TreeView сохранить в xml использую linq

В общем никак не могу написать какой нибудь парсер для treeview для сохранение в xml, понимаю что надо писать рекурсию, но пока что-то не очень.
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 23.07.2011, 13:47   #2
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Ну, вот, например:
Вспомогательный класс, который и будем сериализовать, так как TreeNodeCollection не сериализуется.
Код:
        public class MyNode {
            public MyNode() 
            {
                SubNodes = new List<MyNode>();
            }
            public string Text { get; set; }
            public string Name { get; set; }
            public List<MyNode> SubNodes { get; set; }
        }
Рекурсивная функция:
Код:
        private void CreateMyNode(MyNode curNode, TreeNode node) {
            curNode.Text = node.Text;
            curNode.Name = node.Name;
            foreach (TreeNode nod in node.Nodes) {
                MyNode newNode = new MyNode();
                CreateMyNode(newNode, nod);
                curNode.SubNodes.Add(newNode);
            }
        }
Использование:
Код:
            MyNode myNode = new MyNode();
            foreach (TreeNode node in treeView1.Nodes)
                CreateMyNode(myNode, node);
Сериализация:
Код:
            using (var writer = new XmlTextWriter("c:\\1.xml", Encoding.UTF8) { Indentation = 4, Formatting = Formatting.Indented })
                new XmlSerializer(typeof(MyNode)).Serialize(writer, myNode);
Spawn™Production® вне форума Ответить с цитированием
Старый 23.07.2011, 13:50   #3
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Для лаконичности вспомогательный класс вот так даже лучше оформить...
Код:
        public class MyNode {
            public MyNode() 
            {
                SubNodes = new List<MyNode>();
            }
            [XmlAttribute()]
            public string Text { get; set; }
            [XmlAttribute()]
            public string Name { get; set; }
            [XmlElement(IsNullable=true)]
            public List<MyNode> SubNodes { get; set; }
        }
Spawn™Production® вне форума Ответить с цитированием
Старый 24.07.2011, 16:45   #4
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Спасибо! Решил вопрос вот так
Код:
        public static void SaveItems(XElement curNode, TreeNode item)
        {
            foreach (TreeNode itemloc in item.Nodes)
            {
                XElement newNode = new XElement("folder", new XAttribute("title", itemloc.Text));
                SaveItems(newNode, itemloc);
                curNode.Add(newNode);
            }
        }

        // Сохраняем файл
       XElement root = new XElement("xbel", new XAttribute("version", "1.0"), new XElement("folder", new XAttribute("title", treeView.Nodes[0].Text)));
       foreach (TreeNode item in treeView.Nodes)
          SaveItems(root, item);
       root.Save("имя файла");
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mysql+Delphi 2010 Использую libmysql.dll + mysql.pas не могу инф сохранить в базу kGpROGER БД в Delphi 7 30.12.2010 18:27
Проблема при загрузке файла XML в TreeView artemavd Общие вопросы Delphi 1 20.06.2010 15:39
Добавление узлов в XML в Delphi, исользуя Treeview Анастасия999 Помощь студентам 0 08.05.2010 10:05
вывод xml данных из TreeView в webbrowser Dr.XxX Общие вопросы Delphi 1 10.10.2008 12:06
Как сохранить данные в xml файл средствами delphi ??? juden Общие вопросы Delphi 1 12.08.2008 10:12