Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IXMLNode [D7, WinXP]


Igor_thief ©   (2004-12-21 10:56:00) 

Странный прикол при работе с TXMLNode я обнаружил вчера. Привожу пример кода:
var INewNode: IXMLNode;
...
INewNode['Firms'] := 'List';
for j := 0 to MyList.Count - 1 do
begin
INewNode := INewNode.AddChild('Name');
INewNode.Text := MyList[j];
INewNode := INewNode.ParentNode;
end; // for
...
По идее этот код должен добавить несколько элементов которые будут ветками для INewNode['Firms'] значение которого равно лист, так-как NodeAutocreate = true. НО на самом то деле, все элементы добавляются на одном уровне с List.
Чтобы все работало корректно надо сделать так:
var INewNode: IXMLNode;
...
INewNode := INewNode.AddChild('Firms');
INewNode.Text := 'List';
for j := 0 to MyList.Count - 1 do
begin
INewNode := INewNode.AddChild('Name');
INewNode.Text := MyList[j];
INewNode := INewNode.ParentNode;
end; // for
...
В чем прикол? Ведь при обеих способах создается ветка List, но в первом случае элементы в цикле добавляются тоже как ветки, а во втором, они добавляются как и надо как листья ветки List.


Igor_thief   (2004-12-21 12:24:00) [1]

ЮЮ ©   (21.12.04 12:11) [1]
Точно! Сенкс!


ЮЮ   (2004-12-21 12:11:00) [2]

Если INewNode['Firms'] := 'List'; по смыслу аналогично  INewNode.AddChild('Firms'), т.е. созданию нового узла, то это не значит, что INewNode автоматически станет указывать на этот самый новый узел и, соответственно, следующий код тоже будет добавлять узлы туда же, куда и List. Во втором же случае ты явно указаваешь в качестве INewNode узел List.


Наверх

Титульная страница Поиск, карта сайта Написать письмо