Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/33: Рейтинг темы: голосов - 33, средняя оценка - 4.70
2 / 2 / 0
Регистрация: 23.05.2009
Сообщений: 9

Чтение XML документа и запись в массив полученных элементов

30.08.2009, 11:32. Показов 6869. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как данные из XML документа закинуть, например в массивы строк, либо в List. Чтобы с ними далее можно было работать...
Вид одного из блоков XML документа. Далее по парамтрам(group_id,format_id и т.д. ) в этом же файле ищутся необходимые значения

XML
1
2
3
4
5
6
7
8
9
<setting>
  <position>46</position> 
  <priority>1</priority> 
  <index>46</index> 
  <group_id>10</group_id> 
  <format_id>11</format_id> 
  <val_enum_id>6</val_enum_id> 
  <dimension /> 
 </setting>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2009, 11:32
Ответы с готовыми решениями:

Необходимо создать двумерный массив с количеством строк равным количеству полученных узлов xml документа.
Необходимо создать двумерный массив с количеством строк равным количеству полученных узлов xml документа. Что не правильно в данном коде? ...

Чтение из word-документа и запись в xml-файл
Имеется word-документ , из этого документа необходимо считать данные (например: фио, год и т.д) и записать их в xml-файл. сначала...

Чтение XML документа
Может ли Action Script(Flash Pro программа) читать xml документ в котором содержится 45 картинок в формате BMP? import...

13
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
30.08.2009, 12:00
Подскажите, как данные из XML документа закинуть, например в массивы строк, либо в List. Чтобы с ними далее можно было работать...
например, так:
var xml = new XmlDocument();
xml.Load("...");
var l = new List<string>(xml.SelectNodes("/setting/node()/text()").OfType<XmlNode>().Select(p => p.Value));
0
2 / 2 / 0
Регистрация: 23.05.2009
Сообщений: 9
30.08.2009, 12:13  [ТС]
И что произойдет при этом???
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 4
30.08.2009, 19:21
Предлагаю сделать так:
грузите ваш файл в XDocument
Xdocument xdoc = XDocument.Load("filename.xml");
и используя linq уже берете информацию
var positions = from f in xdoc.Descendants("position") select pn.Value
foreach(var item in positions)
cw("position {0}",item)

как-то так примерно...
или можете уже отсюда запихать в свои коллекции
0
2 / 2 / 0
Регистрация: 23.05.2009
Сообщений: 9
31.08.2009, 08:47  [ТС]
Т.е он возьмет значение из позиции и найдет в этом же файле соответствующее этому значение необходимую информацию, так?
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 4
31.08.2009, 09:16
Запрос сделает выборку, что-то похожее на SQL-запросы но не совсем. Почитайте про linq, пригодится не только при работе с XML, но и с выборками из разных коллекций.
0
 Аватар для Senator
14 / 14 / 2
Регистрация: 30.03.2009
Сообщений: 23
06.09.2009, 01:13
Есть возможность загрузить xml файл в dataset, а дальше работать напрямую с коллекцией datarow.
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
06.09.2009, 02:21
C#
1
2
3
4
5
6
7
var doc = new XmlDocument();
doc.Load("filename.xml");
var docRoot = doc.DocumentElement;
 
int position = int.Parse(docRoot["position"].InnerText),
    priority = int.Parse(docRoot["priority"].InnerText),
    .......
0
2 / 2 / 0
Регистрация: 23.05.2009
Сообщений: 9
06.09.2009, 14:25  [ТС]
В этой коллекции будут храниться данные собранные по xml документу по заданным параметрам в блоках???
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
06.09.2009, 14:35
в какой колекции?
какие параметры?
что за блоки?
0
2 / 2 / 0
Регистрация: 23.05.2009
Сообщений: 9
06.09.2009, 19:25  [ТС]
Цитата Сообщение от exe-dealer Посмотреть сообщение
в какой колекции?
какие параметры?
что за блоки?
про коллекцию написали вы.
а блок я имел в виду один из
<settings>
....
</settings>
в котором уже в свою очередь содержаться group_id, position и т.д.
0
6 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 3
19.12.2012, 09:39
Подключи в проект сборку System.Xml и используй один из следующих классов:
XmlTextReader;
XmlDocument;
Linq.XDocument;
Schema.XmlSchema.

По мне, так самый простой способ почитать xml - с помощью класса XmlTextReader.
Вот тебе простой пример чтения xml на C# с помощью XmlTextReader
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
19.12.2012, 11:18
немного влом всё переделывать, но таким кодом:
Кликните здесь для просмотра всего текста

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
{
XmlDocument FileXML = new XmlDocument();                           
FileXML.Load(fileName);
XmlNode root = FileXML.DocumentElement;
 
            foreach (XmlElement nowElem in root.ChildNodes[0].ChildNodes)
            {
                string strComment = nowElem.ChildNodes[0].InnerText;
                string strPack = nowElem.ChildNodes[1].InnerText.TrimEnd();
 
                device.Commands.Add(new Command(new Pack(strPack , false), strComment ));
            }
 
            foreach (XmlElement nowElem in root.ChildNodes[1].ChildNodes)
            {
                string strComment = nowElem.ChildNodes[0].InnerText;
                string strSigned = nowElem.ChildNodes[1].InnerText;
                string strNumber = nowElem.ChildNodes[2].InnerText;
                string strValue = nowElem.ChildNodes[3].InnerText;
 
                device.Registers.Add(new Register(strComment , strSigned ,strNumber , strValue ));
            }
 
            foreach (XmlElement nowElem in root.ChildNodes[2].ChildNodes)
            {
                string strPack = nowElem.ChildNodes[0].InnerText.TrimEnd();
 
                device.Packs.Add(new Pack(strPack ));
            }
}

Можно распарсить документ такого вида:
Кликните здесь для просмотра всего текста
XML
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
<Device>
  <Commands>
    <Command>
      <Comment>Неописанная комманда</Comment>
      <Pack>01 10 00 19 00 02 04 11 11 22 22 FF 49 </Pack>
    </Command>
    <Command>
      <Comment>Неописанная комманда</Comment>
      <Pack>01 04 00 20 00 01 30 00 </Pack>
    </Command>
    <Command>
      <Comment>Неописанная комманда</Comment>
      <Pack>01 06 00 19 00 05 98 0E </Pack>
    </Command>
    <Command>
      <Comment>Неописанная комманда</Comment>
      <Pack>01 04 00 19 00 01 E0 0D </Pack>
    </Command>
  </Commands>
  <Registers>
    <Register>
      <Comment>Неописанный регистр</Comment>
      <Signed>True</Signed>
      <Number>32</Number>
      <Value>0</Value>
    </Register>
    <Register>
      <Comment>Неописанный регистр</Comment>
      <Signed>False</Signed>
      <Number>25</Number>
      <Value>0</Value>
    </Register>
  </Registers>
  <Packs />
</Device>


Добавлено через 2 минуты
т.е. в документе есть корневой тэг- Device, который содержит три дочерних тэга Commands, Registers,Packs. собственно в коде есть три цикла foreach для каждого из этих тэгов, внутри которых уже разбираются... "дочерние тэги дочерних тэгов корневого тэга".
0
36 / 19 / 1
Регистрация: 14.12.2012
Сообщений: 59
19.12.2012, 14:14
Если нужно только читать XML - используйте XmlReader, а не XmlDocument (конечно если вам важна производительность). Ну а примеров для этих классов в интернете навалом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.12.2012, 14:14
Помогаю со студенческими работами здесь

Чтение XML документа
Добрый день. Помогите получить значения с XML документа такого типа: &lt;?xml version=&quot;1.0&quot; encoding=&quot;windows-1251&quot;...

Чтение из XML документа
Требуется считать из XML документа значение атрибута. Вот кусок XML документа : &lt;TestRun&gt; &lt;ResultSummary...

Чтение XML-документа
Проходит без ошибок,какой функцией прописать ip адрес,пользователь,и пароль, и какие нужны команды для терминала? в pro файл вписал : ...

Чтение XML документа
Отправляю методом GET запрос на яндекс карты и получаю ответ в виде XML файла. &lt;?xml version=&quot;1.0&quot;...

Запись данных, полученных автофильтром, в массив
Здравствуйте, при написании приложения возникла проблема с копированием данных VBA в массив. Код следующего содержания работает не...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru