Avatar billede javanic Nybegynder
28. oktober 2004 - 12:52 Der er 8 kommentarer og
1 løsning

indlæs XML-fili datatable

Hej,

Hvordan indlæser jeg indholdet af en XML-fil i en datatable - findes der ikke en DataTable.readXML?
Avatar billede aaberg Nybegynder
28. oktober 2004 - 12:57 #1
Du kan hente en XML fil direkte ind i et Dataset. Den har en metode der hedder noget lignende:

myDataSet.readXML(filnavn);

Hvis du skal bruge dataene i et datatable, kan du få fat i det ved at skrive:

myDataSet.Tables[0]
Avatar billede javanic Nybegynder
28. oktober 2004 - 13:00 #2
yes yes,...men jeg vil helst undgå at skulle oprette et dataset.

jeg går du fra at du mener:
Dataset ds = new DataSet();
ds.ReadXml(<min xml-fil>);

DataTable dt = ds.Tables[0];

...right ?

men vil helst have det gjort uden dataset'et
Avatar billede javanic Nybegynder
28. oktober 2004 - 13:05 #3
prøver lige løkken med en XmlTextReader, og ser om det er det der skal til... smid gerne et eksempel, hvis du har et liggende
Avatar billede aaberg Nybegynder
28. oktober 2004 - 13:21 #4
Du har ret, det var det jeg mente. Jeg tror desværre ikke du kan undgå at bruge et dataset, da der kan ligge flere tabeller i en XML fil, og der kun kan ligge én i et DataTable. Det kan helt sikkert lade sig gøre på en eller anden måde, men jeg tror ikke du kan undgå at lave nogle store krumspring.

Hvis du disposer dit dataset lige efter du er færdig med at bruge det, optager det ikke systemresourser.

P.S. XmlReader'en kan nok også bruges. Jeg har dog aldrig brugt den selv, så der kan jeg ikke hjælpe.
Avatar billede javanic Nybegynder
28. oktober 2004 - 13:26 #5
ok,...men prøver nu lige at se om jeg kan bikse et eller andet sammen alligevel.

Mht. XML-filen, så indeholder den kun én enkelt tabel, sååå... det bør vel kunne lade sige gøre.


disposer ?? hmm... kalder Garbage collectoren ??
Avatar billede aaberg Nybegynder
28. oktober 2004 - 13:37 #6
quote: disposer ?? hmm... kalder Garbage collectoren ??

Yes. Den gør det automatisk på et tidspunkt (Det er det smukke ved .NET programmering), men hvis du ved du ikke skal bruge et objekt mere, kan man kalde dispose metoden på objektet. Så sletter man informationerne fra hukommelsen med det samme. Alle objekter har en dispose funktion (nedarvet fra Object klassen), den kan f.eks. kaldes således: myDataSet.Dispose();

Selvom din XML fil kun indeholder en tabel, har den stadig mulighed for at indeholde flere. Det er derfor der ikke er lavet en direkte metode til at hente den ind i et DataTable. Hvis jeg var dig, ville jeg gøre følgende:

DataSet myDataSet = new DataSet();
DataTable myTable = new DataTable();

myDataSet.XmlRead("c:\minfil.xml");
myTable = myDataSet.Tables[0];

myDataSet.Dispose();

Din XML fil skal være voldsom stor før du kan mærke en hastigheds forskel på at gøre sådan her, eller at gøre det på en anden måde. Man skal jo springe over hvor gæret er lavest :-).
Avatar billede arne_v Ekspert
28. oktober 2004 - 16:45 #7
Object har ikke en Dispose metode.

Alle klasser der implementerer IDisposable har selv implementeret en Dispose.

Dispose frigør ikke hukommelse for objektet med det samme.

Per konvention frigør Dispose unmanaged resourcer holdt af objektet.
Avatar billede aaberg Nybegynder
28. oktober 2004 - 16:47 #8
Hmm. Så har jeg også lært noget i dag. :-)
Avatar billede javanic Nybegynder
22. november 2004 - 22:01 #9
ryder lidt op...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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

IT-JOB