NXmlConfigHelper 1.1.1
dotnet add package NXmlConfigHelper --version 1.1.1
NuGet\Install-Package NXmlConfigHelper -Version 1.1.1
<PackageReference Include="NXmlConfigHelper" Version="1.1.1" />
<PackageVersion Include="NXmlConfigHelper" Version="1.1.1" />
<PackageReference Include="NXmlConfigHelper" />
paket add NXmlConfigHelper --version 1.1.1
#r "nuget: NXmlConfigHelper, 1.1.1"
#:package NXmlConfigHelper@1.1.1
#addin nuget:?package=NXmlConfigHelper&version=1.1.1
#tool nuget:?package=NXmlConfigHelper&version=1.1.1
NXmlConfigHelper
Small, dependency-free XML configuration library for .NET Framework 4.7.2 and .NET Standard 2.0.
It supports complete object/list serialization as well as safe updates of individual keys in different XML trees. Key updates preserve unrelated settings and write through a temporary file.
Object serialization
var serializer = new NXmlConfig<MySettings>();
serializer.Serialize(path, settings);
MySettings loaded = serializer.Deserialize(path);
var listSerializer = new NXmlConfig<MyItem>();
listSerializer.SerializeList(path, items);
List<MyItem> loadedItems = listSerializer.DeserializeList(path);
Static shortcuts are also available: NXmlConfig.Serialize(path, settings) and
NXmlConfig.Deserialize<MySettings>(path).
DeSerialize and DeSerializeList aliases are included for compatibility with the original
NXmlConfig API.
Work with one list item
var serializer = new NXmlConfig<MyItem>();
int newIndex = serializer.AddItem(path, new MyItem());
MyItem item = serializer.ReadItem(path, newIndex);
serializer.WriteItem(path, newIndex, changedItem);
MyItem removed = serializer.RemoveItem(path, newIndex);
ReadItem, WriteItem, and RemoveItem use a zero-based index. Updating one item rewrites the
list atomically, so the XML file is never left partially written.
Read and write individual keys
var config = new XmlConfigFile(path);
config.WriteValue("mainUI", "machineName", "99");
config.WriteValue("motion", "timeoutMs", 3000);
string machineName = config.ReadValue("mainUI", "machineName", "Unknown");
int timeout = config.ReadValue("motion", "timeoutMs", 1000);
To use a variable's name as the XML key automatically:
string machineName = "99";
config.WriteVariable("mainUI", () => machineName);
machineName = config.ReadVariable("mainUI", () => machineName);
The resulting element is <machineName>99</machineName>. Fields and properties are supported
as well as local variables.
Nested trees use / or \ separators:
config.WriteValue("motion/axisX", "homeSpeed", 125.5);
Dictionary serialization
Serialize a complete generic dictionary to its own XML file:
var values = new Dictionary<string, int>
{
["AxisX"] = 3000,
["AxisY"] = 5000
};
NXmlConfig.SerializeDictionary(path, values);
Dictionary<string, int> loaded =
NXmlConfig.DeserializeDictionary<string, int>(path);
Or map a string-keyed dictionary into one configuration tree:
config.WriteDictionary("motion/timeouts", values);
Dictionary<string, int> loaded =
config.ReadDictionary<int>("motion/timeouts");
Writing a tree dictionary updates the supplied keys and preserves other keys already in that tree.
Write multiple trees in one file operation
config.WriteEntries(new[]
{
new XmlConfigEntry("mainUI", "machineName", "99"),
new XmlConfigEntry("mainUI", "modelName", "M3T"),
new XmlConfigEntry("motion/axisX", "timeoutMs", "3000")
});
This produces:
<configuration>
<mainUI>
<machineName>99</machineName>
<modelName>M3T</modelName>
</mainUI>
<motion>
<axisX>
<timeoutMs>3000</timeoutMs>
</axisX>
</motion>
</configuration>
Additional operations include ContainsValue, ReadTree, RemoveValue, RemoveTree,
WriteValues, and ReplaceAll.
Licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.1 | 124 | 8/14/2026 |
Update the NuGet package icon.