Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Dynamisch lesen (https://www.delphipraxis.net/59210-xml-dynamisch-lesen.html)

AndreasP 19. Dez 2005 13:34


XML Dynamisch lesen
 
mahlzeit,

in einer xml datei habe ich mehrer knoten nach diesem schema:
XML-Code:
<kategorie wert1="blablabla" wert2="blablabla" wert3="blablabla"/>
um die werte zu verwenden habe ich entsprechende variablen und konstanten definiert, z.b.
Delphi-Quellcode:
{...}
var
  kategorie: array[0..2] of widestring.

const
  wert1 = 0;
  wert2 = 1;
  wert3 = 2;
{...}
und die zuweisung erfolgt dann nach diesem muster:
Delphi-Quellcode:
label1.caption := kategorie[wert1];
das funktioniert alles auch prima. nun stellt sich für mich aber die frage ob es nicht eventuell besser wäre wenn ich die string-werte erst auslese wenn ich sie brauche. ich stelle mir das nach diesem muster vor:
Delphi-Quellcode:
label1.caption := LeseXMLWert('categorie', 'wert1');
nach dieser variante würde ich mir die entsprechenden variablen und konstanten sparen. und auch der speicherverbrauch meines programmes müsste sinken. doch wie sieht es mit der performance aus. wird eine via msxml eingebundene xml-datei immer im speicher gehalten für einen erneuten zugriff oder wird sie jedes mal neu geöffnet? wie seht ihr das ganze?

marabu 19. Dez 2005 14:03

Re: XML Dynamisch lesen
 
Hallo Andy,

wenn du auf deine XML-Datei über DOM-Funktionen zugreifst, dann findet nach dem Parsen kein Zugriff auf das Quelldokument mehr statt. Wenn du ein Document Object im Hauptspeicher vorhältst, dann sind zusätzliche Variablen tatsächlich eine Verschwendung von Speicherplatz. Der Zugriff über die DOM-Funktionen ist in der Regel schnell genug, allerdings verbraucht das DOM deutlich mehr Speicher, als eine eigene Speicherstruktur.

Grüße vom marabu

AndreasP 19. Dez 2005 14:41

Re: XML Dynamisch lesen
 
mahlzeit,

wenn ich mich nicht irre läuft ja msxml über dom. das problemm ist das ich ein via:
Delphi-Quellcode:
XMLDoc := CoDomDocument40.Create;
erstelltes objekt nicht wieder freigen kann da mir sonst das programm abschmiert. daher dachte ich wenn ich das object eh die ganze zeit mit mir rumschleppe wäre es eventuell sinnvoll gleich direkt auf die daten zuzugreifen. ich hab blos bedenken bezüglich der performance.

marabu 19. Dez 2005 14:58

Re: XML Dynamisch lesen
 
Zitat:

Zitat von AndreasP
ich hab blos bedenken bezüglich der performance.

Einfach so? Oder weißt du mehr und willst es nur nicht mitteilen? Wenn du keine außergewöhnlichen Anforderungen hast, dann sollte der direkte Zugriff über die DOM-Funktionen kein Problem darstellen.

marabu

AndreasP 20. Dez 2005 09:18

Re: XML Dynamisch lesen
 
mahlzeit,

danke für deine antwort. ich bin gerade dabei mein programm um zustellen und bis jetzt hab ich nix negatives bemerkt, aber bei ca. 300 werten dauert es bis ich fertig bin :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz