Avatar billede kurtspurt Nybegynder
09. november 2005 - 02:35 Der er 8 kommentarer og
1 løsning

Clone xmlDocument

hej

jeg prøver at lave noget undo/redo i et lille program til at ændre xml i.

derfor har jeg brug for et array med xmlDocuments.

problemet er at hvis jeg sætter

array[1] = array[0]

og begynder at redigerer array[1] så kommer rettelserne også i array[0].

Jeg tænker at der nok er fordi man kun kopierer en reference (man skulle da aldrig komme til at tænke på den dejligt suppe med pointers fra de kære ansi C's dage) så jeg har prøvet at se hvordan man kunne klone dem over i hinanden.

desværre er det ikke gået så godt. Nogen foreslag?
Avatar billede spif2001 Nybegynder
09. november 2005 - 08:56 #1
Du kan eventuelt gemme XmlDocument i en temp fil, og så loade den ind i "klonen".

XmlDocument doc = new XmlDocument();
doc.Load(filePath);
//gør noget med doc

doc.Save(tempFilePath);
XmlDocument clone = doc.Load(tempFilePath);

Alternativt kan du løbe alle elementerne i XmlDocumentet igennem og bruge deres attribut værdier til at generere nye XmlElementer til en klon. - noget mere bøvlet.
Avatar billede arne_v Ekspert
09. november 2005 - 10:11 #2
array[1] = (XmlDocument)array[0].Clone();
Avatar billede spif2001 Nybegynder
09. november 2005 - 15:48 #3
for den så klonet alle elementerne i XmlDocument'et eller kun selve XmlDocument'et?
Avatar billede arne_v Ekspert
09. november 2005 - 15:53 #4
docs siger:

Remarks
Cloning an XmlElement copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes. This method recursively clones the node and the subtree underneath it.
Avatar billede arne_v Ekspert
09. november 2005 - 15:53 #5
hvilket jeg læser som at den laver en deep clone ikke en shallow clone
Avatar billede spif2001 Nybegynder
09. november 2005 - 16:00 #6
Det ser sådan ud ja.
Avatar billede kurtspurt Nybegynder
09. november 2005 - 16:28 #7
Arne V --> det er lige det jeg kan bruge. Jeg var dog tæt på. Prøvede også med
array[1] = array[0].Clone();
men den skal naturligvis konverteres først :)

lig et svar
Avatar billede kurtspurt Nybegynder
16. november 2005 - 18:42 #8
skal du ikke ligge et svare?
Avatar billede arne_v Ekspert
16. november 2005 - 18:43 #9
kommer her
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