title: How to edit an XML
body: <p>I have an assignment due to monday, but I am stuck with one task. I have to be able to edit an xml with different set of data. My xml looks like this which I want to edit:</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  &lt;ArrayOfAutokategorie xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
    &lt;Autokategorie id=&quot;8&quot;&gt;
      &lt;name&gt;145265478&lt;/name&gt;
      &lt;feeByDay&gt;1000&lt;/feeByDay&gt;
      &lt;feeByWeek&gt;14444&lt;/feeByWeek&gt;
      &lt;car&gt;
        &lt;string&gt;HALOOOO&lt;/string&gt;
      &lt;/car&gt;
    &lt;/Autokategorie&gt;
    &lt;Autokategorie id=&quot;11&quot;&gt;
      &lt;name&gt;147&lt;/name&gt;
      &lt;feeByDay&gt;52&lt;/feeByDay&gt;
      &lt;feeByWeek&gt;369&lt;/feeByWeek&gt;
      &lt;car&gt;
        &lt;string&gt;HALOOOO&lt;/string&gt;
      &lt;/car&gt;
    &lt;/Autokategorie&gt;
  &lt;/ArrayOfAutokategorie&gt;
  </code></pre>
  <p>My code to edit looks like this:</p>
  <pre><code>public bool update(){
      string filepath = &quot;category.xml&quot;;
                  XDocument xDoc = XDocument.Load(filepath);
                  serializerHelper shelper = new serializerHelper();
                  List&lt;Autokategorie&gt; klist = shelper.showData(typeof(List&lt;Autokategorie&gt;), filepath) as List&lt;Autokategorie&gt;;
      
                  Console.WriteLine(&quot;Bitte geben Sie die Id der Kategorie ein die Sie bearbeiten möchten&quot;);
                  showCategories();
                  Console.WriteLine(&quot;Id: &quot;);
                  string idInput = Console.ReadLine();
      
      
      
                  foreach(var id in klist)
                  {
                      if (id.id.Equals(int.Parse(idInput)))
                      {
                          bool inputTester = true;
                          while (inputTester)
                          {
                              Console.WriteLine(&quot;Welche Seiner Daten möchten Sie verändern? &quot;);
                              Console.WriteLine(&quot;Sie können jederzeit durch das drücken der 4 die Bearbeitung beenden und zurück ins Kategorie Menü gelangen&quot;);
                              Console.WriteLine(&quot;1) Für Namen&quot;);
                              Console.WriteLine(&quot;2) Für Preis pro Tag&quot;);
                              Console.WriteLine(&quot;3) für Preis pro Woche&quot;);
      
      
                              Console.WriteLine(&quot;Bitte geben Sie nun eine Option ein&quot;);
      
                              switch (Console.ReadLine())
                              {
                                  case &quot;1&quot;:
      
                                      var tgt = xDoc.Root.Descendants(&quot;Autokategorie&quot;).Where(x =&gt;
                                        x.Attribute(&quot;id&quot;).Value.Equals(idInput));
      
                                      var name = xDoc.Descendants(&quot;name&quot;).FirstOrDefault();
                                      Console.WriteLine(&quot;Alter Name: &quot; + name.Value);
                                      Console.WriteLine(&quot;Bitte geben sie den neuen Vornamen ein&quot;);
                                      name.Value = Console.ReadLine();
                                      xDoc.Save(filepath);
                                      Console.WriteLine(&quot;Kategorie Name gespeichert als: &quot; + name.Value);
                                      Console.WriteLine(&quot;Drücken sie 1 wenn Sie weitere Daten bearbeiten möchten, oder die 4 um zurück ins Hauptkategorie Menu zu gelangen.&quot;);
      
      
                                      if (Console.ReadLine().Equals(1))
                                      {
      
                                          break;
      
                                      }
                                      continue;
      
                }
      
                          }
                      }
      
                     
      
      
                  }
  </code></pre>
  <p>My problem is that no mater what I type as id be it 8 or 11 only the data of the first set (id = 8) is changed. I can not seem to find why. I really am desperate right now.</p>
  <p>Here are two additional Methods as information first is save method the other one my XMlserialization:</p>
  <p>saveMethod:</p>
  <pre><code>public bool saveCategory()
  
          {
              string filePath = &quot;category.xml&quot;;
              serializerHelper sHelper = new serializerHelper();
              List&lt;Autokategorie&gt; categoryList = new List&lt;Autokategorie&gt;();
              Console.Clear();
              Console.WriteLine(&quot;Bitte geben sie den Namen der Kategorie!&quot;);
              string categoryNameInput = Console.ReadLine();
              Console.WriteLine(&quot;Bitte geben Sie die Tages Leihgebühr!&quot;);
              double feeByDay = double.Parse(Console.ReadLine());
              Console.WriteLine(&quot;Bitte geben Sie die Wöchentliche Leihgebühr!&quot;);
              double feeByWeek = double.Parse(Console.ReadLine());
  
              Console.Clear();
  
  
              if (File.Exists(&quot;category.xml&quot;))
              {
                  categoryList = sHelper.showData(typeof(List&lt;Autokategorie&gt;), filePath) as List&lt;Autokategorie&gt;;
  
              }
              categoryList = sHelper.showData(typeof(List&lt;Autokategorie&gt;), filePath) as List&lt;Autokategorie&gt;;
              var idSetter = new Random();
  
              int id = idSetter.Next(1, 20);
              car = carSelector();
  
              
              Autokategorie category = new Autokategorie(id, categoryNameInput, feeByDay, feeByWeek, car);
  
              categoryList.Add(category);
  
              sHelper.XmlSerialize(typeof(List&lt;Autokategorie&gt;), categoryList, filePath);
              Console.WriteLine(&quot;Ihr Kategorie wurde gespeichert danke für die Zusammenarbeit!&quot;);
  
              Console.Clear();
              Console.WriteLine(&quot;Drücken Sie 1 um ins Hauptmenü zu gelangen und auf 2 um die Applikation zu beenden!&quot;);
              Program p = new Program();
  
  
              switch (Console.ReadLine())
              {
                  case &quot;1&quot;: Program.menuPoints(); return true;
                  case &quot;2&quot;: Environment.Exit(0); return true;
  
              }
              return true;
          }
  </code></pre>
  <p>Xmlserialization:</p>
  <pre><code> public void XmlSerialize(Type data, object objectData, string fileName)
          {
              using (var fileStream = new FileStream(fileName, FileMode.Create)) 
              {
                  XmlSerializer xSerializer = new XmlSerializer(data);
                  xSerializer.Serialize(fileStream, objectData);
                  fileStream.Close();
                  
              }
          
          }
  </code></pre>