Avatar billede ruma1974 Nybegynder
02. juli 2005 - 17:59 Der er 1 kommentar

Læse store XML filer med Delphi's XMLdocument component

Hej,

Er det muligt at læse store XML filer med Delphi's XMLdocument component uden at bruge alt for meget RAM ved foreksemple at lave en memory stream?

Jeg er klar over at der findes mange som har lavt deres egen xml parser component som kan håntere store XML filer. Jeg syntes dog at den indbygge component i delphi 7 dækker mit behov hvis ikke det lige var for mit problem med store XML filer.

Rune
Avatar billede hrc Mester
09. juli 2005 - 20:17 #1
Er løsningen ikke at bruge SAX i stedet? Meget lettere for en Windows-programmør at forstå (DOM er ikke på top-ti listen over XML-værktøjer - et accepteret og nødventigt onde)

Fordelen ved DOM: Kan gå frem og tilbage i dokumentet. Ulempen er et underligt interface og at det er ram-forbrugende.
Fordelen ved SAX: Kan håndtere store filer. Er hurtigt og bruger ingen ram. Ulempen er, at det er en sekventiel gennemgang af filen og at det kan være besværligt at hente komplekse elementer (dataset).

Hvis du bruger en DOM-implementering i Delphi - og det er TXMLDocument, så ligger det i konceptet, at du læser det hele ind. Er filen så stor, at 2Gb ikke er nok? Windows XP skal nok sørge for at swappe filen til disken i det omfang det bliver nødvendigt.

Endeligt, hvis jeg kendte formatet og at det var mere eller mindre in-house (ikke noget OIO-certificeret), så ville jeg måske ende med at lave en specialiceret klasse til den... Ville nok prøve SAX først.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester