Показать сообщение отдельно
  #25  
Старый 04.01.2008, 11:00
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
Сообщение

Код:
function GetTidForPage(XML:IXMLDocument;page:integer):TStringList;:string;
var
  Nodes     : IXMLNodeList;
  PageNode,
  ChildNode : IXMLNode;
  s             :String;
  SList: TStringList;
begin
  s:='';SList := TStringList.Create;
  if XML = nil then Result:='Error: File Not Found';
  try
    Nodes     := XML.DocumentElement.ChildNodes;
    PageNode  := Nodes.FindNode('page');
    while (PageNode <> nil) do
      if (PageNode.NodeName <> 'page') or (PageNode.Attributes['id'] <> page) then
        PageNode := PageNode.NextSibling
      else
        break;
    if PageNode <> nil then begin
      Nodes     := PageNode.ChildNodes;
      ChildNode := Nodes.First;
      while ChildNode <> nil do begin
       s:=s+ChildNode.Text;
       SList.Add(ChildNode.Text); 
      ChildNode := ChildNode.NextSibling;
      end;
    end;
    finally
    XML := nil;
    Result:=s;SList;
  end;
end;
Дальше с этим списком работаем по индексам, например так:
Код:
var
  SL: TStringList;
begin
  SL := GetTidForPage(XML, 1);
  RichEdit1.Lines.Add(SL[0]);
  ...
Не забудьте после обработки список уничтожить:
Код:
SL.Free;
Ответить с цитированием