12. august 2005 - 16:17Der er
16 kommentarer og 1 løsning
Control XMLTextWriter
Hejsa...
Jeg løber en xmlfil igennem, hvor der bliver plukket nogle specifikke nodes ud til brugeren. Jeg vil gerne have at disse nodes skal behandles af brugeren, og sendes tilbage, inden resultatet udskrives i en ny xml fil.
I Form1 har jeg:
string newfile="C:\\NyFil.xml"; XmlTextWriter tw = new XmlTextWriter(newfile, null);
Form2 Form2 = new Form2(this); if(Form2.ShowDialog() == DialogResult.OK) { foreach(string s in Form2.arrLabel1) { Console.WriteLine(s); } foreach(string t in Form2.arrLabel2) { Console.WriteLine(t); }
I Form2 har jeg: lb1[i].Text = Form1.ArrList1[i].ToString(); lb2[i].Text = Form1.ArrList2[i].ToString();
private void savechoose_Click(object sender, EventArgs e) { for(int j=0; j<cb1.Length; j++) { if(cb1[j].Checked) { Label1.Add(lb1[j].Text); //Label1 og 2 er to ArrayList } if(cb2[j].Checked) { Label2.Add(lb2[j].Text); } }
public ArrayList arrLabel1 { get { return Form2.Label1; } }
public ArrayList arrLabel2 { get { return Form2.Label2; } }
På den måde får brugeren lov til vælge navn, hvis de da ikke er ens, og bliver også sendt tilbage til Form1, hvor de bliver udskrevet i consolen. Det er her mit problem opstår. Hvordan sætte man brugerens valg ind igen og i de oprindelige steder?? Eks: De to xml filer er navn1 != navn2, men adress1==adress2. Programmet løber det igennem, brugeren vælger navn1, og det skal sættes ind, så det således ud
<navn></navn> <adress></adress>
Håber det er til at forstå og at det giver et svar :-)
Hvis du læser det hele ind i et XmlDocument kan du bare smide nogle XmlElement'er rundt by reference, og så rette i dem. Når du er færdig gemmer du bare hele dit XmlDocument igen, så er dine rettelser med.
Metoden får et XmlElement med som reference (det indeholder <name>fornavn</name>. Her kan så ændres XmlElements indre tekst (her ændres den til "nyt navn")
Tak for hjælpen...skal lige have sat mig ind i det, da det er ca. 2200 linier kode jeg skal ændre, men det er vist ved at falde på plads hvordan det virker, så bare send et svar :-)
Det er ret nemt når man først kommer ind i det, og noget mere object orienteret end en simpel XmlTextWriter. Det er dog mere memory krævende, da man læser hele dokumentet ind, hvorefter man retter i det. XmlTextWriter er nok mest til at skrive, ikke at rette.
Eftersom XmlElement er en class og ikke en struct er der ingen pointe i at overføre den som en ref.
Når en class overføres som parameter til en funktion vil den altid overføres som en reference til addressen i hukommelsen og vil dermed blive ændret direkte.
En struct kan overføres som parameter og frit ændres uden indflydelse på hvad der foregår andre steder. Af structs kan nævnes int, float, decimal osv.
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.