Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2010, 15:16   #1
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
Вопрос XMLDocument: сопоставление тегов и нодов

Доброе время суток, уважаемые коллеги!
Столкнулся со следующей проблемой:
Делаю визуализацию XML-документа в TreeView.
Накидал такую процедуру:
Код:
procedure TMianForm.BuildTree(XMLNodeList:IXMLNodeList; ParentNode:TTreeNode);
//заполнение дерева из файла XML
var i:integer;
    BufXMLNodeList:IXMLNodeList;
    BufParentNode:TTreeNode;
begin
 if XMLNodeList.Count>0 then
  begin
   i:=XMLNodeList.Count;
   while i>0 do
    begin
     if XMLNodeList[XMLNodeList.Count-i].NodeType=ntText then
     BufParentNode:=MainTree.Items.AddChild(ParentNode,XMLNodeList[XMLNodeList.Count-i].Text);
     if XMLNodeList[XMLNodeList.Count-i].HasChildNodes then
      begin
       BufXMLNodeList:=XMLNodeList[XMLNodeList.Count-i].ChildNodes;
       BuildTree(BufXMLNodeList,BufParentNode);
      end;
     dec(i);
    end;
  end;
end;
Вызываю так:
Код:
XMLDoc: TXMLDocument;
MainTree: TTreeView;

procedure TMianForm.XMLFileToTree(SourceFileName:String);
begin
 Try
  LockWindowUpdate(MainTree.Handle);
  XMLDoc.LoadFromFile(SourceFileName);
  XMLDoc.Active := True;
  BuildTree(XMLDoc.ChildNodes,nil);
 finally
  XMLDoc.Active := False;
  LockWindowUpdate(0);
 end;
end;
При обходе XML кол-во нодов больше чем реальное кол-во тегов XML-документа. Т.е. каждый тег состоит из нескольких нодов. Напр. тег и текст тега - это разные ноды. Вот какие типы нодов бывают:
Код:
type TNodeType = (ntReserved, ntElement, ntAttribute, ntText, ntCData, tEntityRef, ntEntity, ntProcessingInstr, ntComment, ntDocument, ntDocType, ntDocFragment, ntNotation);
Собственно проблема заключается в том чтобы каждому тегу сопоставить составляющие ноды.
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 01.10.2010, 16:32   #2
alexxx.yagoda
Новичок
Джуниор
 
Регистрация: 01.10.2010
Сообщений: 1
По умолчанию

может поможет вот это
http://parsing-and-i.blogspot.com/20...ew-delphi.html
alexxx.yagoda вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с компонентом XMLDocument gektor66 Работа с сетью в Delphi 3 21.07.2010 09:07
XMLDocument Miningo Общие вопросы Delphi 3 07.08.2009 14:59
XMLDocument AidarBik Общие вопросы Delphi 19 18.02.2009 21:41
XMLDocument Sanek777 Общие вопросы Delphi 2 04.11.2008 16:15