Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
mitugova_ella
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 4
1

Формирование XML документа с узлами с одинаковыми именами

04.07.2018, 12:11. Просмотров 799. Ответов 6
Метки нет (Все метки)

Здравствуйте. Может кто-нибудь подсказать, как создать в XML документе два узла с одинаковыми именами. Типа
<ArrayOfNUMPAS>
<NUMPAS>Номер паспорта животного1</ NUMPAS>
<NUMPAS>Номер паспорта животного2</ NUMPAS>
</ArrayOfNUMPAS>
Делаю так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var Xml: IXMLDocument;
...
Xml:= TXMLDocument.Create(nil);
...
with Xml do
begin
with DocumentElement do
begin //DocumentElement
 
...
with AddChild ('ArrayOfNUMPAS') do
begin //ArrayOfNUMPAS
for nb:=0 to aqBirki.recordcount-1 do
begin
AddChild('NUMPAS') ;
ChildValues['NUMPAS']:=aqBirki.FieldByName('nbirki').value;
aqBirki.Next;
end;
end;
В файле это выглядит так

<ArrayOfNUMPAS>
<NUMPAS>333333333333</NUMPAS>
<NUMPAS />
</ArrayOfNUMPAS>
Это последняя запись из двух, она затирает первую. Как быть?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2018, 12:11
Ответы с готовыми решениями:

Delphi xml с одинаковыми тегами
Я вообще профан, самоучка, но думаю поможете... Имеем xml-ку: &lt;Каталог&gt; ..&lt;Фирма&gt;АБВГ&lt;/Фирма&gt;...

Чтение XML с одинаковыми узлами
Здравствуйте. Есть у меня файл XML вот такого рода: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;...

Формирование XML документа
Здравствуйте, уважаемые форумчане! Возникла следующая проблема, при создании следующей записи ...

Формирование XML документа в памяти компьютера
Задача заключается в следующем: нужно сформировать XML-документ и отправить его по сети. C...

Сохранение всех JPG из документа с именами, полученными из этого же документа
Имеется docx, в котором содержится таблица, состоящая из семи столбцов. Меня интересуют только...

6
StudAssistant
Эксперт
9811 / 7003 / 2319
Регистрация: 17.04.2006
Сообщений: 9,622
04.07.2018, 12:11
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
6
krapotkin
3966 / 3324 / 1130
Регистрация: 14.04.2014
Сообщений: 15,934
Записей в блоге: 17
04.07.2018, 13:10 2
что вы с этим WITH прямо. чтобы потом точно не отладиться и концов не найти...

Delphi
1
2
3
4
5
6
root:=DocumentElement
arr:=root.AddChild(sARRAYOFNUMPAS);
for i:=0 to N-1 do
begin
  item:=Arr.AddChild(sNUMPAS);
end;
1
mitugova_ella
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 4
04.07.2018, 13:57  [ТС] 3
Спасибо, так не получается. Мне помогли на другом форуме. Нужно строки
Delphi
1
2
AddChild('NUMPAS') ;
ChildValues['NUMPAS']:=aqBirki.FieldByName('nbirki').value;
заменить на
Delphi
1
AddChild('NUMPAS').NodeValue := aqBirki.FieldByName('nbirki').value
и все получилось, как надо. Все сохраняется. Спасибо.
0
krapotkin
3966 / 3324 / 1130
Регистрация: 14.04.2014
Сообщений: 15,934
Записей в блоге: 17
04.07.2018, 14:07 4
что значит не получилось??
я же не буду еще и заполнять значения за вас??

item- это добавленный узел
в него нужно писать текст, атрибуты, другие узлы, все что угодно
1
mitugova_ella
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 4
04.07.2018, 14:36  [ТС] 5
Извините, я ошиблась и присвоила значение в ChildValues ['NUMPAS'] , а потом переделала и получилось вот так правильно
Delphi
1
2
3
4
5
6
7
8
root:=DocumentElement ;
arr:=root.AddChild('ArrayOfNUMPAS');
for nb:=0 to aqBirki.recordcount-1 do
begin
  item:=Arr.AddChild('NUMPAS');
  item.Text:= aqBirki.FieldByName('nbirki').value;
  aqBirki.Next;
end;
Спасибо. Еще один вариант, а я столько билась и не смогла найти ни одного.
0
krapotkin
3966 / 3324 / 1130
Регистрация: 14.04.2014
Сообщений: 15,934
Записей в блоге: 17
04.07.2018, 14:58 6
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

просто этот гораздо понятнее.
не надо жалеть переменных
особенно локальных )

Добавлено через 1 минуту
вот только
Delphi
1
for nb:=0 to aqBirki.recordcount-1 do
заменить на
Delphi
1
while not aqBirki.eof do
1
mitugova_ella
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 4
04.07.2018, 15:01  [ТС] 7
Спасибо.
0
04.07.2018, 15:01
StackOverflow
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2018, 15:01

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5...

Solution'ы с одинаковыми именами
Всем привет! Эта студия (.NET 2003) уже достала ... почему, когда открываю решение, она компилит...

Два класса с одинаковыми именами
В глобальной области видимости есть функция Polygon. Можно ли в своем пространстве имен создать...


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

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

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