Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 5

Как работать с XML в Delphi?

10.04.2016, 16:57. Показов 14179. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста разобраться, как работать с XML в Delphi
У меня есть XML документ с тестом, необходимо разработать программу, которая будет подгружать этот тест
Попробовала открыть xml-документ и получить номер билета
Delphi
1
2
3
4
XMLDocument1.LoadFromFile('C:\Users\win\Desktop\2.xml');
XMLDocument1.Active := true;
Label1.Caption := VarToStr(XMLDocument1.DocumentElement.ChildNodes['page'].Attributes['num_Bilet']);
XMLDocument1.Active := false;
Непонятно, как получить номер билета 1, когда тегов <page> сразу несколько...
И каждый тег <page> содержит внутри свой билет...
Вложения
Тип файла: rar 2.rar (42.7 Кб, 39 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2016, 16:57
Ответы с готовыми решениями:

Где найти мануал по парсингу XML? Как работать с XML в Delphi (в частности, TXMLDocument)?
Всех приветствую! Раньше несколько лет работал в Матлабе, но теперь приспичило писать программу на Дельфи. Надо открывать xml-файлы,...

Как работать с XML?
Подскажите вот такое дело пишем 5мес прогу по конвертации алгортмов из с билдер в дельфи и обртно в итоге щас дошло что нужно...

Как работать с xml?
Всем привет ! вот есть хмl &lt;r&gt; &lt;set var1=&quot;test1&quot; /&gt; &lt;conf&gt;test2&lt;/conf&gt;

25
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
12.04.2016, 09:11
Студворк — интернет-сервис помощи студентам
qwertehok, Ну если в таком формате рассматривать вопрос то да эта функция ниочем, но для работы с небольшими кусками самописного xml протокола, вполне себе ничего )
0
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 5
12.04.2016, 09:43  [ТС]
unifikator большое спасибо, за подробные комментарии

У вас есть строка, которая переводит текст в UTF-8, но исходный XML уже в кодировке UTF-8
Delphi
1
xmldocument1.XML.Text:=ansitoutf8(xmldocument1.XML.Text);
У меня содержимое XML загружается кракозябрами
Я пробовала убирать эту строку, но результат не менялся, всё также получаю кракозябры
Пробовала сделать следующим образом:
Delphi
1
2
3
XMLDocument1.Active:=True;
//XMLDocument1.Encoding:= 'UTF-8';
XMLDocument1.Encoding:= 'windows-1251';
Но эти варианты тоже не принесли результатов

P.S. У меня Delphi XE5
Миниатюры
Как работать с XML в Delphi?  
0
5996 / 4571 / 1096
Регистрация: 29.08.2013
Сообщений: 28,229
Записей в блоге: 3
12.04.2016, 10:02
Цитата Сообщение от osokina Посмотреть сообщение
Но эти варианты тоже не принесли результатов
выкладывайте файл
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 10:16
Говорят, что В Delphi XE5 кодировка Unicode, а я тестировал этот код в Delphi 6 с кодировкой ANSI. Попробуйте убрать ansitoutf8 и utf8toansi из этого кода. Запишите так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
begin
//Загружаем файл из папки программы. Можно указать другую папку.
xmldocument1.xml.LoadFromFile(getcurrentdir+'\2.xml');
//Активизируем документ.
xmldocument1.Active:=true;
//Выводим номер первого билета "1". exposition с номером 0, а первый page с номером 1,
//поэтому ChildNodes[1]. В нём num_Bilet, поэтому ChildNodes['num_Bilet'] и получаем текст.
label1.Caption:=xmldocument1.DocumentElement.ChildNodes[1].ChildNodes['num_Bilet'].Text;
//Выводим название билета "Билет 1". Поэтому title_Bilet.
//Чтобы отобразился русский текст переводим обратно в ANSI.
label2.Caption:=xmldocument1.DocumentElement.ChildNodes[1].ChildNodes['title_Bilet'].Text;
//Выводим текст первого вопроса "В каком случае работник, занятый на работах с вредными условиями труда, должен проходить периодические медицинские осмотры?"
//Первый тег vopros четвёртый, нумерация тегов начинается с 0, поэтому его номер 3, то есть ChildNodes[3]
//В него входит тег vop, поэтому childnodes['vop'].
label3.Caption:=xmldocument1.DocumentElement.ChildNodes[1].ChildNodes[3].childnodes['vop'].Text;
//Выводим текст вопроса второго билета "Действия персонала при пожарах в на производственных территориях..".
//Теперь тут второй тег page с номером 2, поэтому ChildNodes[2].
label4.Caption:=xmldocument1.DocumentElement.ChildNodes[2].ChildNodes[3].childnodes['vop'].Text;
//Деактивизируем документ.
xmldocument1.Active:=false;
end;
0
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 5
12.04.2016, 10:38  [ТС]
unifikator большое спасибо еще раз, помогло, проблема пропала
если что я к вам еще раз обращусь, хорошо?)

qwertehok Файл в самом первом сообщении прикрепила
Вложения
Тип файла: rar 2.rar (42.7 Кб, 19 просмотров)
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
12.04.2016, 10:44
Конечно, если что, то обращайтесь ко мне. Можете отправить мне личное сообщение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2016, 10:44
Помогаю со студенческими работами здесь

как работать с xml-файлом?
Задача заключается в следующем: как из xml-файла, выдернуть данные (с помощью какого свойства, метода, а лучше на примере &quot;времени и...

Как работать с XML в SQLServer?
К примеру в поле типа text у меня xml данные Могу ли я с помощью SQL запроса вытащить из этого поля какой нибудь node и вообще,...

Как работать с большими XML
На стороннем сайте лежит XML, все товары магазина с описанием. 50 Мб. Мне нужны из этого файла только остатки товара. Это что...

Как работать в РНР с инфой из XML?
Народ, помогите! Как работать в РНР с инфой из XML? Если можна киньте ссылочки на доку:) Заранее благодарна!

Стандартный вопрос: Как работать с xml? parsить??
У меня есть xml файл. Как с нима работать?? Мне надо инфу из него доставать и записывать в переменные... а потом... &lt;item&gt;...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru