Jak usunąć lub edytować n-ty element z pliku xml za pomocą LINQ?

Jak usunąć lub edytować n-ty element z pliku xml za pomocą LINQ?
dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Mam coś takiego:

Kopiuj
<Items>
  <Item>
    <name>MaeDQzwR8vVUDbYrR5giNA==</name>
    <nick>YsiD+Y4TdOg2D85XWszhLg==</nick>
    <pw>p6kVN9eL3Lvx/EKj2QJzuA==</pw>
    <note>9w03rUnfD24=</note>
  </Item>
  <Item>
    <name>MaeDQzwR8vVUDbYrR5giNA==</name>
    <nick>YsiD+Y4TdOg2D85XWszhLg==</nick>
    <pw>p6kVN9eL3Lvx/EKj2QJzuA==</pw>
    <note>9w03rUnfD24=</note>
  </Item>
  <Item>
    <name>MaeDQzwR8vVUDbYrR5giNA==</name>
    <nick>YsiD+Y4TdOg2D85XWszhLg==</nick>
    <pw>p6kVN9eL3Lvx/EKj2QJzuA==</pw>
    <note>9w03rUnfD24=</note>
  </Item>
</Items>

Chciałbym teraz usunąć cały drugi element Item lub edytować go, jak się do niego dostać najlepiej za pomocą LINQ? Nie mogę go przeszukać po jakiejś wartości, bo wartości mogą się powtarzać.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
1
Kopiuj
            XDocument xdoc = XDocument.Load("test.xml");
            //jak wiesz ze to <Item>:
            var items = xdoc.Descendants("Item");
            //a jak nie znasz nazwy:
            //var items = xdoc.Descendants("Items").Elements();
            int i = 0;
            foreach (var item in items) {
                if (i == 1) { //2 element
                    item.Remove();
                    break;
                }
                i++;
            }
            xdoc.Save("test.xml");

PS: Możliwe że zaraz znajdzie się ktoś kto to zrobi lepiej ale ja się dopiero uczę C#

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

O dzięki, to robię tak jak pokazałeś.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.