Avatar billede Slettet bruger
31. marts 2008 - 21:42 Der er 33 kommentarer og
2 løsninger

XML-filer med Visual C#

Hej,

Kan Visual C# automatisk håndtere XML-filer i forbindelse med projekter og hvordan?
Avatar billede arne_v Ekspert
31. marts 2008 - 21:50 #1
Mener du læse og skrive XML filer ?
Avatar billede arne_v Ekspert
31. marts 2008 - 21:51 #2
Det har jeg skrevet lidt om i http://www.eksperten.dk/artikler/498
Avatar billede Slettet bruger
31. marts 2008 - 21:56 #3
Nej, jeg mener, om programmet kan håndtere dem. Selve sproget har jeg styr på.
Altså: Kan man f.eks. tilføje en XML-fil til Solution Explorer og håndtere den der?
Avatar billede arne_v Ekspert
31. marts 2008 - 22:01 #4
Du kan tilføje en XML fil til projektet med:

add
new item
xml file
Avatar billede Slettet bruger
31. marts 2008 - 22:06 #5
Okay... Det var ellers let. Og holder programmet så selv styr på det hele?
Avatar billede Slettet bruger
31. marts 2008 - 22:06 #6
...og hvordan reffererer jeg til filen fra koden?
MyXmlDocument.Load("Hvad?");
Avatar billede arne_v Ekspert
31. marts 2008 - 22:20 #7
Hvad er "det hele" ?
Avatar billede arne_v Ekspert
31. marts 2008 - 22:21 #8
Jeg har aldrig prøvet, men hvis du opretter XML filen i projektet så vil jeg gætte på
at du kan Load'e filen uden at angive dir.
Avatar billede kalp Novice
31. marts 2008 - 22:32 #9
og ellers rammer du den helt sikkert med

System.Environment.CurrentDirectory + "\\dinxmlfil.xml";
Avatar billede Slettet bruger
31. marts 2008 - 22:49 #10
Med det hele mener jeg, at du kan tilgå filen fra Visual C#, og at den automatisk er tilgængelig for exe'n.

System.Environment.CurrentDirectory + "\\dinxmlfil.xml" virker IKKE. Har lige prøvet :(
Avatar billede Slettet bruger
31. marts 2008 - 22:51 #11
... Det er så System.Environment.CurrentDirectory + "\\Data.xml" i mit tilfælde, men den melder stadig fejl.
Stien bliver rigtig (samme dir som exe'n), men tilsyneladende finder Visual C# ikke ud af at oprette xml-filen der... Hvad kan der være galt?
Avatar billede arne_v Ekspert
31. marts 2008 - 22:56 #12
Jeg har lige testet i min 2008 Express.

Man skal bruge:

doc.Load(@"..\..\Data1.xml");

MS har valgt at placere XML filen i solution roden.
Avatar billede kalp Novice
31. marts 2008 - 22:59 #13
hvis stien stemmer, men den ikke kan finde ud af, at oprette en xml fil der, så bør den smide en fejl..
og det gør den måske også og det kan være dig der har en tom catch block.

hvis den smider en exception, så skal du nok flytte dit projekt ud af under mappen i Documents..
find et sted på c:\ drevet i stedet.

(gætter på dit projekt kan være oprettet under Documents :) )
Avatar billede Slettet bruger
01. april 2008 - 09:26 #14
Jeg har allerede flyttet projektet (med VC#, bare rolig). Jeg HADER de default dirs...
Anyway. Hvad gør jeg så, når projektet er færdigt? Så vil den jo altid loade fra to dirs oppe med doc.Load(@"..\..\Data1.xml")?
Avatar billede arne_v Ekspert
01. april 2008 - 14:54 #15
Flere muligheder:
- lade program laese fra samme dir som exe og i udviklings miljoet flytte XML filen
- angive placeringen af xml fil i app config
- soege efter den flere steder med File.Exists
Avatar billede Slettet bruger
01. april 2008 - 15:00 #16
Hmm... Kan jeg ikke selv placere xml-filen i den dir, hvor exe'n kommer til at ligge og bruge en relativ sti? Eller går VC# så helt i baglås?
Avatar billede arne_v Ekspert
01. april 2008 - 15:04 #17
det svarer til min foerste pind
Avatar billede Slettet bruger
01. april 2008 - 15:09 #18
Ah. Jeg læser bare lease :)
Enten skulle du få dig et dansk tastatur... Eller også skulle jeg få øjne.
Men prøver det lige.
Avatar billede Slettet bruger
01. april 2008 - 15:09 #19
I can see!
Aw... Oh, well. I guess I was wrong.
Avatar billede arne_v Ekspert
01. april 2008 - 16:30 #20
Paa arbejde har jeg fysisk US tastatur.

Jeg kan nemt switche til logisk dansk tastatur. Men jeg bliver altsaa syg af at
bruge et tastatur hvor man skriver noget andet end det der staar paa tasterne.
Avatar billede Slettet bruger
01. april 2008 - 16:31 #21
Det ved jeg. Du har forklaret det én gang ^^
Skriv du bare videre.
Avatar billede arne_v Ekspert
01. april 2008 - 16:34 #22
Tilbage til emnet: kan du faa det til at virke ?
Avatar billede hmortensen Nybegynder
01. april 2008 - 16:37 #23
En lille side bemærkning:
Du kan i solution explorer vælge properties for filen og sætte "Copy to output directory" til "Copy if newer" eller "Copy always".

Så vil doc.Load("xxx.xxx"); virke.
Avatar billede Slettet bruger
01. april 2008 - 16:37 #24
Har ikke haft mulighed for at teste det endnu... Men jeg laver et nyt spørgsmål, hvis det ikke virker :)
Tak for hjælpen.
Avatar billede Slettet bruger
01. april 2008 - 16:38 #25
Hov. Hr. Mortensen har måske fundet lige det jeg mente med at få VC# til at fikse det. Hm... Jeg prøvet lige, om jeg kan få det testet.
Avatar billede Slettet bruger
01. april 2008 - 16:42 #26
Holy crap!
Mortensens virker... Så funker din nok også, Arne.
Anyway.
Mange tak, begge to. Nu tror jeg ikke, jeg får brug for at spørge om mere XML foreløbigt (som om) :)
Avatar billede Slettet bruger
01. april 2008 - 16:42 #27
Hov, vil I ikke lige smide nogle svar også? ^^
Avatar billede arne_v Ekspert
01. april 2008 - 17:19 #28
.
Avatar billede hmortensen Nybegynder
01. april 2008 - 22:36 #29
Det var så lidt.
Avatar billede Slettet bruger
01. april 2008 - 23:18 #30
Sådan :P Jeg tillod mig at justere pointene efter aktiviteten.
Avatar billede Slettet bruger
09. april 2008 - 13:44 #31
Hov! Jeg har lige et problem. Når app'en har ændret xml-filen i output-dir, opdateres xml-filen i selve projektet sig ikke! Hvordan kan jeg fikse det?
Avatar billede arne_v Ekspert
09. april 2008 - 13:47 #32
Det problem er nok uløseligt.

Men det bør heller ikke være et problem.

Du tester at dit program virker. Og så sender du dit program ud i verden. Og de har
så deres egne XML filer derude som du ikke har dagang til.
Avatar billede Slettet bruger
09. april 2008 - 18:10 #33
Ja, men når jeg tester har jeg netop behov for at kunne tjekke, om xml'en læses og skrives til på rigtig vis. Derfor ville det da være hensigtsmæssigt at have en 'Copy from output directory'-funktion.
Anyway, jeg må klare mig uden. Så opretter og redigerer jeg bare xml-filen én gang fra VC# og må så klare resten fra min app.
Avatar billede hmortensen Nybegynder
09. april 2008 - 20:43 #34
Du kan sætte VS til at kopiere filen når der kompileres.

Det gøres ved at ta egenskaber på projektet -> build events.
Under post build sætter du:
copy "$(ProjectDir)$(OutDir)Data1.xml" "$(ProjectDir)Data1.xml" /Y

Og så skal du selvfølgelig have, "copy if newer" på, og ikke "copy always".
Avatar billede Slettet bruger
09. april 2008 - 21:04 #35
Okay :)
Mange tak!
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