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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Uživatelský avatar
lukas.sei
Level 4
Level 4
Příspěvky: 1074
Registrován: 14 led 2013 11:02

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

Příspěvek od 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:

Kód: Vybrat vše

<?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:

Kód: Vybrat vše

using (XmlWriter xw = XmlWriter.Create(@"soubor.xml", settings))
{
        xw.WriteStartDocument(); // hlavička
        xw.WriteStartElement("skupiny"); // otevření kořenového elementu uzivatele

        // zápis jednotlivých uživatelů
        foreach (Skypiny s in skupiny)
        {
                xw.WriteStartElement("skupina");
                xw.WriteAttributeString("Jmeno", s.ToString());
                xw.WriteEndElement();
                xw.WriteElementString("Heslo", u.Heslo.ToString();
        }

        xw.WriteEndElement(); // uzavření kořenového elementu
        xw.WriteEndDocument(); // konec dokument
        xw.Flush();
}
Za každou radu budu velmi rád.
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

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

Příspěvek od faraon »

http://stackoverflow.com/questions/2092 ... -xmlwriter
http://www.codeproject.com/Articles/152 ... e-XML-File
http://www.experts-exchange.com/questio ... riter.html

Otevřít soubor v režimu Append, kde se připisuje na jeho konec, se zrovna u XML prostě nedá, a pro režim Random, který dokáže zapisovat na libovolné místo v souboru, bys stejně nejdřív musel celý soubor přečíst, od místa kde chceš vložit nový záznam jeho obsah zkopírovat, do toho místa zapsat tvůj nový záznam, a potom ten konec zase zkopírovat zpět za něj. Takže mi připadá jednodušší a rychlejší to všechno načíst a uložit najednou. Navíc se budou z disku načítat a zase ukládat celé sektory najednou, což náhodný zápis ještě víc zpomaluje.
Doporučuji nastudovat nízkoúrovňové služby operačního systému, bez jakýchkoliv nadstaveb a knihoven, z těch ti to bude jasné ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Blokování stahovaných souborů
    od Riviera kid » » v Windows 11, 10, 8...
    10 Odpovědi
    10938 Zobrazení
    Poslední příspěvek od Riviera kid
  • Velikost souboru a složek na disku
    od L.L » » v Vše ostatní (sw)
    5 Odpovědi
    8999 Zobrazení
    Poslední příspěvek od L.L

Zpět na „Programování a tvorba webu“