Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
Chewbacca1
4 / 4 / 0
Регистрация: 14.02.2015
Сообщений: 122
#1

Чтение из XML в несколько Label - C#

15.02.2015, 17:36. Просмотров 456. Ответов 4
Метки нет (Все метки)

Здравствуйте)
Подскажите, пожалуйста!)Необходимо загрузить текст из XML файла (одного) в label'ы, написал вот такой код:
Тык:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private void FillPages()
        {
            string text = "";
 
            XmlTextReader xmlReader = new XmlTextReader(path + @"\file.xml");
 
            while (true)
            {
               
                    xmlReader.ReadToFollowing("Title");
                    text = text + xmlReader.ReadElementContentAsString() + "\r\n";
                    xmlReader.ReadToFollowing("Text");
                    text = text + xmlReader.ReadElementContentAsString() + "\r\n";
                    break;
               
            }
            label1.Text = text;
 
            /*************************************/
 
            string text1 = "";
 
            XmlTextReader xmlReader1 = new XmlTextReader(path + @"\file1.xml");
 
            while (true)
            {
 
                xmlReader1.ReadToFollowing("Title");
                text1 = text1 + xmlReader1.ReadElementContentAsString() + "\r\n";
                xmlReader1.ReadToFollowing("Text");
                text1 = text1 + xmlReader1.ReadElementContentAsString() + "\r\n";
                break;
 
            }
            label2.Text = text1;
           ...................
        }

Но в нем читаются из нескольких файлов..
Можно ли его упростить, допустим у меня будет много компонентов label.?
Получается необходимо задать атрибуты в XML тэге и как то считать ?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2015, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из XML в несколько Label (C#):

Вывод данных XML в несколько Label - C#
https://api.vk.com/method/users.get.xml?user_id=211344927&fields=sex,bdate,city,country,photo_max,online,online_mobile,domain,has_mobile,con...

Вывести в label несколько строк - C#
(Windows Forms) Пытаюсь получить информацию о видеокарте и.т.п: но не совсем получается что хочу! В консольном приложение это делается...

Сохранить текст из Label в xml файл - C#
Подскажите пожалуйста, как сохранить текст из Label в xml файл, желательно при помощи Linq ?

.NET 4.x Как несколько раз заменить текст Label по нажатию на кнопки - C#
Я делаю лабу. типо викторины. И мне надо что бы на форме немялись вопросы. Я не как не могу понять как заменить Label и radioButton. То...

Чтение XML - C#
Доброго времени суток. Для интереса пишу читалку FB2 (XML).... Вот примерное содержаниеXML: <?xml version="1.0" encoding="utf-8"?>...

чтение xml - C#
Знаю что эта тема поднималась и неоднократно но я так в гугле нечего понятного не нашел. собственно у меня такой вопрос: вот я создал...

4
Metall_Version
2113 / 1250 / 415
Регистрация: 04.03.2014
Сообщений: 4,095
Завершенные тесты: 2
15.02.2015, 21:22 #2
Цитата Сообщение от Chewbacca1 Посмотреть сообщение
Получается необходимо задать атрибуты в XML тэге и как то считать ?
указать имя лейбла и его текст, и все, этого достаточно
например
XML
1
2
3
<root>
  <lable name="label1">Тут текст лейбла</lable>
</root>
1
Chewbacca1
4 / 4 / 0
Регистрация: 14.02.2015
Сообщений: 122
17.02.2015, 17:08  [ТС] #3
Metall_Version,
Объясните, пожалуйста, подробнее
Помимо лоада хмл что еще там?)

пока написал вот так:
Тык:

C#
1
2
3
4
5
6
7
8
9
10
11
private void FillPages()
        {
            XmlDocument document = new XmlDocument();
            document.Load(@"files.xml"); 
 
            XmlNode node = document.SelectSingleNode("/root/Lecture");
            label1.Text = node.InnerText;
 
            XmlNode node2 = document.SelectSingleNode("/root/Lecture2");
            label2.Text = node2.InnerText;   
        }
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<root>
    <Lecture>
                Introduction to the First Edition
        This is not a how-to book. 
    </Lecture>
    <Lecture2>
        This book will tell you what you need to know before you go read
        those other books
    </Lecture2>
</root>
0
Metall_Version
2113 / 1250 / 415
Регистрация: 04.03.2014
Сообщений: 4,095
Завершенные тесты: 2
17.02.2015, 18:20 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
я бы делал через xdocument
C#
1
2
3
4
5
6
7
8
9
10
private void FillPages()
        {
            XDocument document = XDocument.Load(@"files.xml");
 
            var el = document.Root.Element("label1");
            label1.Text = el!=null?el.Value:"";
 
            el = document.Root.Element("label2");
            label2.Text = el != null ? el.Value : "";
        }
но я бы вообще по другому делал.
изменил бы структуру документа так
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<root>
  <info name="label1">
    Introduction to the First Edition
    This is not a how-to book.
  </info>
  <info name="label2">
    This book will tell you what you need to know before you go read
    those other books
  </info>
</root>
и по заданному имени из документа, искал бы такой лейбл на форме, и задавал бы ему значение текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void FillPages()
        {
            XDocument document = XDocument.Load(@"files.xml");
            var root = document.Root;
            if(root == null) return;
 
            foreach (var elem in root.Elements())  // проходимся по всем нодам докумнета
            {
                var atr = elem.Attribute("name");
                if (atr == null) continue;  // если атрибута имени нету пропускаем этот нод
 
                var labelName = atr.Value;  // вытягиваем имя лейбла
 
                var label = this.Controls.Find(labelName, true)  //  ищем лейбл по имени
                    .OfType<Label>()
                    .SingleOrDefault();
                if (label == null) continue;
                // если нашли лейбл с таким именем то задаем ему текст
                label.Text = elem.Value;
            }
        }
такой подход получается расширяемый, и если у нас добавится сколько угодно лейблов в документ то код менять не нужно
1
Chewbacca1
4 / 4 / 0
Регистрация: 14.02.2015
Сообщений: 122
17.02.2015, 18:34  [ТС] #5
Metall_Version, Спасибо огромное!)
Вы очень помогли мне)
0
17.02.2015, 18:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2015, 18:34
Привет! Вот еще темы с ответами:

Чтение XML - C#
Делаю прогу билеты пдд. С чтением XML никак не могу разобраться. Скопировал с этой темы код, который предложили в ответе, но что-то пошло...

чтение из xml - C#
Доброго времени суток. Есть такой вопрос. вывожу из xml файла значения &quot;boardname&quot; в combobox ArrayList myAl = new ArrayList(); ...

Чтение из XML - C#
имеется xml-файл &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;CL name=&quot;group1&quot;&gt; &lt;CL name = &quot;1&quot; /&gt; &lt;CL name = &quot;2&quot; /&gt; &lt;/CL&gt; ...

Чтение xml - C#
Имеется xml файл вида: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;DataLog&gt; &lt;Node&gt; &lt;DateTime...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru