gpt4 book ai didi

c# - Visual C# 在 Appdata 中存储和读取自定义 XML 中的自定义选项

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:24 25 4
gpt4 key购买 nike

我有一个应用程序,我要在 Visual Studio 2013 中将其从 VB 转换为 C#,而 .NET 不再支持 PrivateProfileString 但希望我改用 XML。

我需要一个非常简单的代码的帮助,它可以在 XML 中存储和读取两个字符串 setting1setting2 并从中读回。

我想知道解决此问题的最有效方法是什么。是使用 XMLDocument 还是 XMLWriter

如果有人能给我一个简单的脚本,我将不胜感激。谢谢!

最佳答案

假设您在某处有一个 settings.xml 文件,其中包含:

<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<Section1>
<Key1>Value1</Key1>
<Key2>Value2</Key2>
</Section1>
<Section2>
<Key1>Value3</Key1>
<Key2>Value4</Key2>
<KeyX>Value5</KeyX>
</Section2>
</Settings>

然后你可以有一个像这样的 SettingsProvider 类:

using System.Xml.Linq;

public static class SettingsProvider
{
private const string settingsFileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "settings.xml");

private static XDocument settings;

static SettingsProvider()
{
try
{
settings = XDocument.Load(settingsFileName);
}
catch
{
settings = XDocument.Parse("<Settings/>");
}
}

public static string GetValue(string section, string key, string defaultValue)
{
XElement settingElement = GetSettingElement(section, key);

return settingElement == null ? defaultValue : settingElement.Value;
}

public static void SetValue(string section, string key, string value)
{
XElement settingElement = GetSettingElement(section, key, true);

settingElement.Value = value;
settings.Save(settingsFileName);
}

private static XElement GetSettingElement(string section, string key, bool createIfNotExist = false)
{
XElement sectionElement =
settings
.Root
.Elements(section)
.FirstOrDefault();

if (sectionElement == null)
{
if (createIfNotExist)
{
sectionElement = new XElement(section);
settings.Root.Add(sectionElement);
}
else
{
return null;
}
}

XElement settingElement =
sectionElement
.Elements(key)
.FirstOrDefault();

if (settingElement == null)
{
if (createIfNotExist)
{
settingElement = new XElement(key);
sectionElement.Add(settingElement);
}
}

return settingElement;
}

public static void RemoveSetting(string section, string key)
{
XElement settingElement = GetSettingElement(section, key);

if (settingElement == null)
{
return;
}

XElement sectionElement = settingElement.Parent;

settingElement.Remove();

if (sectionElement.IsEmpty)
{
sectionElement.Remove();
}

settings.Save(settingsFileName);
}
}

你可以这样使用它:

string section1Key1 = SettingsProvider.GetValue("Section1", "Key1", "default");
SettingsProvider.SetValue("Section1", "Key1", "OtherValue");
SettingsProvider.SetValue("Section1", "Key2", "Value2");
SettingsProvider.SetValue("Section2", "Key1", "Value3");
SettingsProvider.RemoveSetting("Section2", "Key1");
SettingsProvider.RemoveSetting("Section1", "Key2");

关于c# - Visual C# 在 Appdata 中存储和读取自定义 XML 中的自定义选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com