А где не работает?
А вообще, кажется сликом много лишнего даже здесь

Вот пример моего прокета. Там атрибутов нет, но это не принципиально.
Код:
procedure TUpdateInfo.LoadFromFile(AFileName: String);
var
ADoc : IXMLDocument;
begin
ADoc := TXMLDocument.Create(Nil);
ADoc.LoadFromFile(AFileName);
ADoc.Active := True;
Try
Parse(ADoc);
Finally
ADoc := Nil;
End;
end;
procedure TUpdateInfo.LoadFromStrings(AStrings: TStringList);
var
ADoc : IXMLDocument;
begin
ADoc := TXMLDocument.Create(Nil);
ADoc.XML.Assign(AStrings);
ADoc.Active := True;
Try
Parse(ADoc);
Finally
ADoc := Nil;
End;
end;
procedure TUpdateInfo.Parse(ADoc: IXMLDocument);
var
I : Integer;
ANode : IXMLNode;
begin
For I := 0 To ADoc.DocumentElement.ChildNodes.Count-1 Do
Begin
ANode := ADoc.DocumentElement.ChildNodes[i];
If ANode.NodeName = 'VersionNumber' Then
Begin
VersionNumber.Major := StrToIntDef(ANode.ChildNodes.FindNode('Major').Text,0);
VersionNumber.Minor := StrToIntDef(ANode.ChildNodes.FindNode('Minor').Text,0);
VersionNumber.Release := StrToIntDef(ANode.ChildNodes.FindNode('Release').Text,0);
VersionNumber.Build := StrToIntDef(ANode.ChildNodes.FindNode('Build').Text,0);
End;
If ANode.NodeName = 'ProgramName' Then
Begin
FProgramName := ANode.Text;
End;
If ANode.NodeName = 'ReleaseNotes' Then
Begin
FReleaseNotes.Text := ANode.Text;
End;
If ANode.NodeName = 'ModuleFileName' Then
Begin
FModuleFileName := ANode.Text;
End;
End;
end;
Получить xml с сервера можно с помощью TIdHTTP...