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

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

XMLDocument, проблема при чтении xml-файла. [D6, Win2k]


calm ©   (2004-10-22 14:10:00) 

Уважаемые коллеги,
не могу прочитать данные из XML-файла.
На первый взгляд все делаю в соответсвии с хелпом и доступными примерами.
Есть такой код:
procedure TSmeta.Load(FileName: string);
var
 xmlWorkList:IXMLNode;
 xmlWork:IXMLNode;
 xmlWorkParam:IXMLNode;
 xmlKoeffList:IXMLNode;
 i:Integer;
 work_cnt:Integer;
 test:Variant;
 Work:TWork;
begin
 with dmCore do
 begin
   // получаем количество работ
   XMLDocument.FileName:=FileName;
   XMLDocument.Active:=True;
   xmlWorkList:=XMLDocument.DocumentElement.ChildNodes[0];
   work_cnt:=xmlWorkList.ChildNodes.Count;

   i:=0;
   while i<=work_cnt-1 do
   begin
     xmlWork:=xmlWorkList.ChildNodes[i];
     MessageDlg(xmlWork.LocalName, mtINformation, [mbOk], 0);
     MessageDlg(IntToStr(xmlWork.ChildNodes.Count), mtINformation, [mbOk], 0);
     Work:=TWork.Create;

     xmlWorkParam:=xmlWork.ChildNodes['id'];
     Work.Id:=StrToInt(xmlWorkParam.Text);
     xmlWorkParam:=xmlWork.ChildNodes['caption'];
     Work.Caption:=xmlWorkParam.Text;

     Inc(i);
   end;

 end; // with dmCore
end;

и вот такой xml-файл
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<smeta>
 <works count="4">
   <work>
     <id>0</id>
     <caption>test caption</caption>
   </work>
   <work>
     <id>0</id>
     <caption>test caption 2</caption>
   </work>
   <work>
     <id>0</id>
     <caption>test caption 3</caption>
   </work>
   <work>
     <id>0</id>
     <caption>test caption 4</caption>
   </work>
 </works>
</smeta>

Поблемы:
1. work_cnt:=xmlWorkList.ChildNodes.Count;
work_cnt присваивается 0, хотя я ожидаю 4 (количество узлов в узле works)

2. Если вместо строки
xmlWorkList:=XMLDocument.DocumentElement.ChildNodes[0];
написать
xmlWorkList:=XMLDocument.DocumentElement; (ожидаю, чато это корневой узел <smeta>
то work_cnt станет равно 3, хотя у узла <smeta> только Один потомок.

В чем может быть ошибка?


Calm   (2004-10-22 15:13:00) [1]

файл я загружаю какой надо. Проверил это еще раз на свякий случай :)


Наверх

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