c# xml durchlaufen, daten anpassen

royal_do

Grünschnabel
Hallo,

ich habe folgende XML datei
Code:
<MappingConfiguration>
  <DomainMapping old="SESAM3" new="" />
  <UserMapping old="SESAM3\test1" new="" />
  <UserMapping old="SESAM3\test2" new="" />   
</MappingConfiguration>

und möchte diesen durchlaufen, nach der alten Domäne (sesam3) durchsuchen und diese durch einen im einem Textfeld eingegeben String ersetzen und das ganze in new abspeichern. Allerdings durchläuft mein Quellcode zwar die Datei setzt aber den letzten wert ins erste new ein.


Hier mein Code:
Code:
        private void button3_Click(object sender, RoutedEventArgs e)
        {

            if (olddomain.Text != "")
            {
                if (newdomain.Text != "")
                {
                    XmlDocument trash = new XmlDocument();                        
                    trash.Load(dateipfad.Text);                                     
                    XmlNodeList neulist = trash.GetElementsByTagName("new=");
                    XmlElement root = trash.DocumentElement;                      
                  XmlNodeList xnList = trash.SelectNodes("/MappingConfiguration/Usermapping");   
              //    XmlNodeList elemList = trash.GetElementsByTagName("old=");      
                   

                    foreach (XmlNode test in root.ChildNodes)                     
                    {
                        int z = 0;
                        string AlteDom = olddomain.Text;                            
                        string NeueDom = newdomain.Text;                             
                        string a2;                                                 
                        string OldTrash = test.Attributes["old"].InnerText;         
                        StringBuilder current = new StringBuilder(OldTrash);       

                        try
                        {
                            int i = OldTrash.IndexOf(AlteDom);                      
                            current.Remove(i, AlteDom.Length);                      
                            current.Insert(i, NeueDom);                             
                            a2 = current.ToString();                                
                           
 
                         root.SetAttribute("new",a2);
                            
                            textBox5.Text = textBox5.Text + a2 + "\n";             
                        }catch { }
                    }                 
                    
                    trash.Save(@"C:\test.xml");                                    
                    textBox2.Clear();                                              
                    TextReader tr = new StreamReader(@"C:\test.xml");               
                    string line;
                    while ((line = tr.ReadLine()) != null)
                    {
                        textBox2.AppendText(line + "\r\n");
                    }
                    tr.Close();                 

                }else{ System.Windows.Forms.MessageBox.Show("Bitte neue Domäne angeben!");  }           //neuer domänenname fehlt
            }else{  System.Windows.Forms.MessageBox.Show("Bitte alte Domäne angeben!");   }             //alter domänenname fehlt
        }

Mir fehlt da irgendwo anscheinend eine Schleife um in der XML-Ddatei eine Zeile weiter zu springen, allerdings hab ich absolut keine Ahnung wo. Ich bin auch recht neu in der c# Programmierung, daher ist der Quelltext wahrscheinlich etwas chaotisch


trotzdem schon mal vielen dank für die Hilfe
royal_do
 

royal_do

Grünschnabel
Ok nach langem suchen und testen hat sich der Fehler gezeigt. Habe
Code:
 root.SetAttribute("new",a2);
statt
Code:
 test.SetAttribute("new",a2);

geschrieben, im nachhinein natürlich logisch

damit erledigt :)