IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: C# zapisování do XML bez přepsání celého souboru

Aktivity
Avatar
lukas.sei
Člen
Avatar
lukas.sei:19.3.2016 13:43

Čaute,
Dá se v C# zapisovat do XML souboru bez jeho celého přepsání ?
Mám soubor který vypadá asi takhle:

<?xml version="1.0" encoding="utf-8"?>
<skupiny>
  <skupina Jmeno="admin">
    <Heslo>*****</Heslo>
  </skupina>
  <skupina Jmeno="normal">
    <Heslo>*****</Heslo>
  </skupina>
</skupiny>

A já bych potřeboval do toho souboru pouze připsat další skupinu a nepřepsat tím celý soubor.
Ukládání mám zatím řešeno podle tohohle návodu:
http://www.itnetwork.cz/…-zapis-saxem

Za každou radu budu velmi rád.

 
Odpovědět
19.3.2016 13:43
Avatar
ORRNY99
Člen
Avatar
ORRNY99:19.3.2016 14:23

Zkus tohle:

XDocument doc = XDocument.Load("soubor.xml");
            XElement xml = doc.Element("skupiny");
            xml.Add(new XElement("skupina", new XAttribute("Jmeno", "User"),
                       new XElement("Heslo", "******")));
            doc.Save("soubor.xml");
Editováno 19.3.2016 14:24
 
Nahoru Odpovědět
19.3.2016 14:23
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na lukas.sei
Petr Čech:19.3.2016 22:26

Obávám se, že to nejde. Kdyby tam nebyl ten poslední tag, má StreamWriter možnost na appendování: https://msdn.microsoft.com/…6b035cb.aspx

Nahoru Odpovědět
19.3.2016 22:26
the cake is a lie
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:19.3.2016 22:51

A parsuješ si ten soubor potom sám, nebo ho někam exportuješ? Pokud by něj sahala jen tvoje appka, mohl bys mít něco jako:

<?xml version="1.0" encoding="utf-8"?>
<skupiny>
  <skupina Jmeno="admin">
    <Heslo>*****</Heslo>
  </skupina>

k tomu bys mohl vždy appendovat nové heslo, a když bys to potřeboval přečíst, načetl bys obsah toho souboru a přidal k tomu interně

</skupiny>

další hesla bys přidával takto:

using (StreamWriter sw=new StreamWriter("cesta_k_souboru",true))
                {
                    sw.Write("<skupina Jmeno=\"admin\"><Heslo>*****</Heslo></ skupina >");
                }
Nahoru Odpovědět
19.3.2016 22:51
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.