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

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

Uživatelský avatar
lukas.sei
Level 4
Level 4
Příspěvky: 1074
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod lukas.sei » 19 bře 2016 14:22

Č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.

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 19 bře 2016 17:11

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)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Upgrade grafické karty nebo celého PC?
    od dexikovicek » 21 srp 2024 22:33 » v Rady s výběrem hw a sestavením PC
    3
    2283
    od petr22 Zobrazit poslední příspěvek
    22 srp 2024 09:59
  • Blokování stahovaných souborů
    od Riviera kid » 07 čer 2025 16:47 » v Windows 11, 10, 8...
    10
    2795
    od Riviera kid Zobrazit poslední příspěvek
    dnes, 06:56
  • Velikost souboru a složek na disku
    od L.L » 05 úno 2025 11:50 » v Vše ostatní (sw)
    5
    3264
    od L.L Zobrazit poslední příspěvek
    05 úno 2025 17:42
  • Program na hledání poškozených souborů JPG Příloha(y)
    od Rosta_Kolmix » 09 lis 2024 11:01 » v Design a grafické editory
    2
    4498
    od Minapark Zobrazit poslední příspěvek
    15 lis 2024 11:04
  • IDM hláška o nemožném stažení souboru Příloha(y)
    od bluenite » 04 črc 2024 11:08 » v Vše ostatní (inet)
    2
    4334
    od bluenite Zobrazit poslední příspěvek
    06 črc 2024 19:40

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů