使用XmlWriter将文件路径写入XML文件

时间:2012-01-13 13:46:58

标签: c# xml file xmlwriter

我希望有人可以帮我解决这个烦人的小问题。我正在尝试写一个XML设置文件的文件路径,但没有任何反应。我没有得到任何错误消息或Just in Time调试窗口,它只是不执行该代码块。

程序功能是您设置用户帐户,并为每个帐户选择一个文件的功能。如果我将文件路径留空,则创建的XML文件没有任何问题。但是,如果甚至有一条路径要写,那么文件永远不会被创建。

以下是我的功能示例:

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();
        }

    }

为了让事情更加混乱,当我用一个简单的“Test”字符串替换FilePath变量时,它工作正常,文件创建没有问题。

2 个答案:

答案 0 :(得分:1)

请尝试使用CDATA而不是转义路径字符。

您可以替换:

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

以下行:

xml_settings_file.WriteStartElement("File");
xml_settings_file.WriteCData(Properties.Settings.Default.FilePaths[i]);
xml_settings_file.WriteEndElement();

答案 1 :(得分:0)

这还有待解决。我最后只使用了内置的应用程序设置。