HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

IXMLDOMDocument használata


XML 6. rész

Példaprogram letöltése

40564 bájt

A cikksorozat eddigi részeiben szó volt arról, hogy egy XML fájl hierarchikus felépítésű. Az ilyen adatállományok szerkezetének egyik legáttekinthetőbb megjelenítési formája a fa. Ebben a példában egy olyan programot készítünk, amely egy tetszőleges XML fájlt képes beolvasni, és egy TreeView-ben megjeleníteni.
Ehhez a programhoz már felhasználjuk az MS XML Type Library-t is. Ennek elkészítéséhez a következőket kell tennünk: a Project menüből válasszuk ki az Import Type Library menüpontot. A listában keressük meg a Microsoft XML elemet. Lehet, hogy több verzió is létezik belőle, válasszuk a legmagasabb verziószámút. A Create Unit gombbal hozzuk létre a unit-ot, amire a programban a uses kulcsszó után hivatkozni fogunk.

Az XML dokumentumot az IXMLDOMDocument interfészen keresztül tudjuk majd kezelni, amelyhez hozzárendelünk egy változót. Ez a változó az XMLDoc lesz, amit a Form OnCreate eseményénél hozunk létre:
var
  XMLDoc: IXMLDOMDocument;
…
XMLDoc:=CoDOMDocument.Create;
A dokumentum betöltése a Button1 OnClick eseményénél történik meg, amihez a Load eljárást használjuk. A TreeView1 BeginUpdate metódusát meghívva letiltjuk annak frissítését. Ennek hasznát elsősorban hosszabb dokumentumoknál fogjuk érezni, mivel a megjelenítés sebessége jelentősen megnő. A BuildDOMTree eljárással beolvassuk a dokumentum elemeit a TreeView1-be. a TreeView1 első elemét "kibontjuk" az Expand eljárással. Ezzel tulajdonképpen a teljes szerkezetet megjelenítjük, mivel az első elem tartalmazza az összes többit is. Az EndUpdate eljárással engedélyezzük a TreeView1 frissítését.
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then begin
    XMLDoc.Load(OpenDialog1.FileName);
    TreeView1.Items.BeginUpdate;  TreeView1.Items.Clear;
    BuildDOMTree(XMLDoc, nil);
    TreeView1.Items[0].Expand(true);
    TreeView1.TopItem:=TreeView1.Items[0];  TreeView1.Items.EndUpdate;
  end;
end;
Fentebb már tisztáztuk, hogy az elemek beolvasását a TreeView1-be a BuildDOMTree eljárás végzi. Egy hierarchikus szerkezetet a leghatékonyabban rekurzív eljárással tudunk bejárni, ezért most is ezt tesszük. Az eljárás első paramétere a beolvasandó csomópont, ami kezdetben maga a dokumentum (XMLDoc), vagyis a gyökér elem. A ParentNode paraméter a TreeView1 azon eleme, aminek a gyermek elemei lesznek a most beolvasandó elemek.
Első lépésben megnézzük, hogy a csomópont típusa elem, vagy dokumentum-e. Ezt a NodeType property-ből olvashatjuk ki. Ha a feltétel igaz, akkor hozzáadjuk az elem tartalmát (text) és nevét (NodeName) a TreeView1 elemeihez. Ezután egy ciklussal beolvassuk az elem gyermek csomópontjait, és rekurzívan meghívjuk az eljárást az aktuális csomóponttal. A csomópontok számát a ChildNode.Length property-ből olvashatjuk ki, míg a csomópontokat a ChildNodes.Item függvénnyel, vagy lenti kódban látható módon kapjuk meg.
procedure TForm1.BuildDOMTree(DOMNode: IXMLDOMNode; ParentNode: TTreeNode);
var
  i: integer;
  TreeNode: TTreeNode;
begin
  if (DOMNode.NodeType = NODE_ELEMENT)
  or (DOMNode.NodeType = NODE_DOCUMENT) then
  begin
    TreeNode:=TreeView1.Items.AddChild(ParentNode, copy(DOMNode.text,1,40)+' <'+DOMNode.NodeName+'>');
    for i:=0 to DOMNode.ChildNodes.Length-1 do
      BuildDOMTree(DOMNode.ChildNodes[i], TreeNode);
  end;
end;


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 429. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |