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

C# .NET .NET (C# a Visual Basic) C# zapisování do XML bez přepsání celého souboru American English version English version

Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Č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. března 13:43
Avatar
ORRNY99
Člen
Avatar
ORRNY99:

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. března 14:24
 
Nahoru Odpovědět 19. března 14:23
Avatar
Odpovídá na lukas.sei
Petr Čech (czubehead):

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. března 22:26
Why so serious? -Joker
Avatar
Petr Čech (czubehead):

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. března 22:51
Why so serious? -Joker
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.