none
Zápis do XML ze statické metody

    Dotaz

  • Zdravím,

    pokouším se o ukládání nastavení aplikace ve formě XML souboru tímto způsobem:

    • Ve statickém konstruktoru třídy Settings inicializuji objekt typu NameValueCollection m_settings z existujícího XML
    • Chci-li změnit nějakou hodnotu této kolekce například z formuláře nastavení, používám k tomu atributy (např. Version)
    • V jejích setterech provádím nejprve nastavení příslušné hodnoty v kolekci a pak zavolám metodu Update třídy Settings, která vypadá zrhuba takto:
    public static void Update()
    {
                XmlWriterSettings settings = new XmlWriterSettings();
    
                settings.CloseOutput = true;
                XmlWriter tw = XmlWriter.Create(m_settingsPath);
    
                tw.WriteStartDocument();
                tw.WriteStartElement("configuration");
                tw.WriteStartElement("appSettings");
    
                for (int i = 0; i < m_settings.Count; ++i)
                {
                    tw.WriteStartElement("add");
                    tw.WriteAttributeString("key", m_settings.GetKey(i));
                    tw.WriteAttributeString("value", m_settings.Get(i));
                    tw.WriteEndElement();
                }
    
                tw.WriteEndElement();
                tw.WriteEndElement();
                tw.Flush();
    	    tw.Close();
    }
    Problém spočívá v tom, že soubor se přepíše pouze při prvním volání této metody. Při dalších pokusech to vypadá, že ani volání Close() nezpůsobí fyzický zápis do souboru. Je to nějaká vlastnost statických metod, o které nevím?

    Děkuji za případnou radu.

    Tomáš
    18. srpna 2009 14:43

Odpovědi

Všechny reakce