Domanda

Spero che qualcuno possa aiutarmi con questo fastidioso piccolo problema che sto avendo. Sto cercando di scrivere un percorso di file su un file di impostazioni XML, ma non succede nulla. Non ricevo messaggi di errore o semplicemente in tempo di debug di Windows, non eseguono quel blocco di codice.

La funzione Programma è quella in cui si imposta gli account utente e selezionare un file per ciascun account. Se lascio vuoti i percorsi del file, il file XML viene creato senza problemi. Tuttavia, se c'è anche un percorso da scrivere, il file non viene mai nemmeno creato.

Ecco un campione della mia funzione:

private void SaveSettings()
    {
        XmlWriterSettings xml_settings = new XmlWriterSettings();
        xml_settings.Indent = true;
        xml_settings.IndentChars = ("    ");

        using (XmlWriter xml_settings_file = XmlWriter.Create("settings.xml", xml_settings))
        {
            xml_settings_file.WriteStartElement("Main_Node");
            xml_settings_file.WriteElementString("SettingA", Properties.Settings.Default.SettingA.ToString());
            xml_settings_file.WriteElementString("SettingB", Properties.Settings.Default.SettingB.ToString());
            xml_settings_file.WriteElementString("SettingC", Properties.Settings.Default.SettingC.ToString());

            for (int i = 1; i < Properties.Settings.Default.UserAccounts.Count; i++)
            {
                xml_settings_file.WriteElementString("Account", System.Security.SecurityElement.Escape(Properties.Settings.Default.UserAccounts[i].ToString()));
                xml_settings_file.WriteElementString("File", System.Security.SecurityElement.Escape(Properties.Settings.Default.FilePaths[i]));
            }

            xml_settings_file.WriteEndElement();
            xml_settings_file.Flush();
        }

    }

Per rendere le cose più confuse, quando sostituisco la variabile FilePath con una semplice stringa "test", funziona bene e il file viene creato senza problemi.

È stato utile?

Soluzione 2

Questo deve ancora essere risolto. Ho finito per utilizzare invece le impostazioni dell'applicazione integrate.

Altri suggerimenti

Prova a usare CDATA invece di sfuggire ai caratteri del percorso.

Puoi sostituire:

xml_settings_file.WriteElementString("File", System.Security.SecurityElement.Escape(Properties.Settings.Default.FilePaths[i]));

con le seguenti righe:

xml_settings_file.WriteStartElement("File");
xml_settings_file.WriteCData(Properties.Settings.Default.FilePaths[i]);
xml_settings_file.WriteEndElement();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top