* Uofficiel Black/White liste V3
|
Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
XML og C#Af Supporter Jesper Lauridsen | 02-04-2009 08:23 | 1296 visninger | 18 svar, hop til seneste
Hej
Jeg skal have fremstillet en form for versionsstyring.
Det beskrives bedst ved at sammenligne med word.
Når et word2007 dokument skal gemmes som word2003 er der funktionalitet der ikke understøttes og dermed går tabt.
Jeg har nogle filer skrevet i xml. Filen skal konverteres fra version 2 til version 1.
F.eks.
Version 1:
Data
Version 2:
Data2
Hvordan kan man i sin applikation bestemme hvad der skal fjernes for at få version 1?
Og hvordan kan jeg bestemme hvad der skal tilføjes for at gå fra version 1 til version 2?
Jeg er klar over at det er et rimelig abstrakt spørgsmål, og at man skal have hardcodet i applikationen hvilke ændringer der skal foretages.
Jeg har tænkt på at lave en klasse der indeholder disse informationer.
Ændringer:
- Fra 1 til 2 : Root/Device/Command = Data2
- Fra 2 til 1 : Root/Device/Command = Data
Version 2 understøttes kun hvis applikationen er opdateret til at kunne håndtere den.
Skriv hvis der er spørgsmål! --
#2 Tak for svaret, men det er ikke problemet hvordan der arbejdes med XML i C# - det er jeg klar over.
Det er mere hvordan man i applikationen bestemmer hvad der skal fjernes og tilføjes for at gå fra version 1 til version 2 og omvendt. -- #3
Det kan RegEx klare, men det er lidt en kompliceret affære, så du skal nok læse lidt om det først. -- If it's not on fire, it's a software problem.
http://www.OVRKLL.com[...] #4 Det kan godt være RegEx er løsningen. Jeg kender lidt til det, men ikke så kompliceret som dette. Så må jeg til at læse :|
Andre der har noget at byde ind med? -- Drop regex.
Du skal ikke til at bruge regex. Læs dit dokument som et DOMdocument. Løb det igennem og lav de ændringer du skal. Det er sådan du skal gøre. Det andet er noget ROD!
Det andet er "lettere" at lave. Men det bliver noget rod som du aldrig kan lave om i. Du glemmer hvad der sker, og dine ændringer kommer til at have utilsigtede følger.
http://msdn.microsoft.com[...]
Det er den eneste rigtige måde at gøre det på. Pas på med at behandle et XML dokument som en tekststreng. Det er fyfy.
Hav lidt tålmodighed og lær det på den rigtige måde. Du har fået linket til dokumentationen, men det er småt med eksempler hos MS. Brug google til at finde eksempler. -- Gæstebruger, opret dit eget login og få din egen signatur. #0 Mangler måske lidt mere info , men:
Version 2->1:
Det kommer selvfølgelig an på hvordan din XML file er:
1. Hvis strukturen/elementerne er ens (navn), så er det jo let. Så er det bare at læse de elementer, som findes for version 1 og registrere dem, som ikke kunne læses = version 2 unikke elementer, hvilket er let med XmlDocument.
2. Hvis stukturen og elementerne ikke ens, må du vel gå den lange vej og skrive en importer/eksporter for begge versioner. Jeg kunne forestille mig at læsningen foregår til samme data object (?), hvis begge XML filer, skal bruges i samme kontekst i programmet? Så er det bare at registrere, hvilke variable m.v. som bliver indlæst og hvilke, som ikke bliver? -- Any intelligent fool can make things bigger,more complex,and more violent.It takes a touch of genius and courage to move in the opposite direction Jeg forstod ikke problemstillingen.
Bestemmer du selv hvilke felter der findes i XML dokumenterne for hver "version"?
Så du ved hvilke felter du har at gøre med, alt efter hvilken version du står med?
Eller ønsker du dynamisk at kunne sammenligne to XML dokumenter, og lave en sammenligning af forskellene?
Jeg forstår ikke formuleringen "Hvordan jeg kan bestemme hvad der skal fjernes/tilføjes for at gå fra version X/Y til version Y/X" ... kan du omformulere den? -- Bevar naturen - sylt et egern #6 Jeg har også selv googlet lidt med xml og regex sammen og det anbefales ikke jf. http://stackoverflow.com[...]
Kigger lige på det, og vender tilbage.
#7 Det er nok punkt 2 der skal bruges, men det skal forstås sådan at der kun findes en fysisk xml-fil, som jeg kan loade ind. Og så afhængig af om brugeren ønsker at arbejde med version 1 eller version 2 skal der tilføjes flere funktioner hvis version 2 vælges - dette skal ske runtime.
#8 Jeg ved til dels hvilke felter der findes, men et element kan dog indeholde x antal childs. Så ja, jeg ønsker at kunne sammenligne XML dokumenterne. -- #8
Omformulering: Jeg laver en klasse med en funktion der kan gå fra version 1 til 2 og en funktion der kan gå fra version 2 til 1.
Dvs. i forhold til den stump XML jeg har skrevet skal værdien i denne xPath: Root/Device/Command ændres fra "Data" til "Data2" hvis man ønsker en version 2.
Og Root/Device/Command ændres fra "Data2" til "Data". -- #6
Hmm... En gæst kommer dumpende med navnet 'C# guru' og emailadressen ' [email protected]' og underkender anvendelsen af RegEx - hvor troværdigt :)
Anyway, du har ret; jeg havde ikke overvejet, at XML-strukturen er så gennemført, at RegEx er overflødigt. -- If it's not on fire, it's a software problem.
http://www.OVRKLL.com[...] #12 Yes sir! Tror det er noget i retning af det jeg leder efter. Kigger lige på det! -- #12 Nu har jeg kigget lidt på det, og det er ikke helt som jeg ønsker det, men kan se der vist ikke er nogen let løsning på problemet...
Tak for svar alle! -- #11
Det er vel lige så - eller mere - troværdigt, som dine input i #2+4.
Han har ret i at det er uklogt at betragte XML som tekst. Jeg forstår ikke bruger/gæst problematikken... Han siger noget mere klogt end andre i tråden, men skal alligevel li' ha' et stik for at være gæst. -- Bevar naturen - sylt et egern #15
Jeg pointerede bare, at det er lidt inkongruent, at han tog sig tid til at skrive 10 linjers svar på spørgsmålet, kalder sig selv guru og alligevel foretrækker at forblive anonym og endda bruger en yderst useriøs fake mail... Men det må han jo selv om. -- If it's not on fire, it's a software problem.
http://www.OVRKLL.com[...] #16 hvorfor forholder du dig ikke bare til indholdet i stedet? Nu gør du dig jo selv til grin.. -- Later equals never. #17
Jeg har aldrig påtvunget dig at dele mine holdninger, og der er ikke meget mere at sige om origo, så lad da tråden ligge? -- If it's not on fire, it's a software problem.
http://www.OVRKLL.com[...]
Opret svar til indlægget: XML og C#
Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.
Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.
Opret bruger | Login
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 254 personer har stemt - Mit energiselskab (Ewii f.eks) 12%
|
|
|