Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как создать в XML-документе два узла с одинаковыми именами?  [new]
mitugova_ella
Member

Откуда:
Сообщений: 4
Здравствуйте. Может кто-нибудь подсказать, как создать в XML документе два узла с одинаковыми именами. Типа
<ArrayOfNUMPAS>
<NUMPAS>Номер паспорта животного1</ NUMPAS>
<NUMPAS>Номер паспорта животного2</ NUMPAS>
</ArrayOfNUMPAS>


Делаю так
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>

Это последняя запись из двух, она затирает первую. Как быть?
4 июл 18, 11:57    [21542039]     Ответить | Цитировать Сообщить модератору
 Re: Как создать в XML-документе два узла с одинаковыми именами?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10411
AddChild('NUMPAS').NodeValue := aqBirki.FieldByName('nbirki').value;
4 июл 18, 12:22    [21542128]     Ответить | Цитировать Сообщить модератору
 Re: Как создать в XML-документе два узла с одинаковыми именами?  [new]
mitugova_ella
Member

Откуда:
Сообщений: 4
_Vasilisk_,
Спасибо большое, все получилось. А я столько времени потратила, экспериментируя. Спасибо.
4 июл 18, 13:04    [21542287]     Ответить | Цитировать Сообщить модератору
 Re: Как создать в XML-документе два узла с одинаковыми именами?  [new]
mitugova_ella
Member

Откуда:
Сообщений: 4
Еще один вариант правильного формирования узлов с одинаковыми номерами, вдруг кому пригодится. Вариант тоже не мой, но проверила, работает.
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;
4 июл 18, 14:40    [21542719]     Ответить | Цитировать Сообщить модератору
 Re: Как создать в XML-документе два узла с одинаковыми именами?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10411
mitugova_ella
А я столько времени потратила, экспериментируя.
Фокус в том, что этой строкой
mitugova_ella
AddChild('NUMPAS');
вы создаете новый элемент NUMPAS. А этой
mitugova_ella
ChildValues['NUMPAS']
вы ищете первый дочерний элемент с именем NUMPAS
4 июл 18, 15:42    [21543047]     Ответить | Цитировать Сообщить модератору
 Re: Как создать в XML-документе два узла с одинаковыми именами?  [new]
mitugova_ella
Member

Откуда:
Сообщений: 4
_Vasilisk_,
Спасибо за пояснение. Теория у меня. конечно, хромает. Формирование XML делала всего пару раз и такого случая не было. Спасибо.
4 июл 18, 15:57    [21543104]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить