Fast, flexible and high customizable XML serializer for converting between .NET objects and XML.
- Flexible model of contracts via IXmlContractResolver
- Custom formatting and construction of objects via IXmlConverter
- Built-in support for the Nullable<>, List<>, Dictionary<> and more
- Supports for base and derived types via IXmlTypeResolver
- Compatibility with XML attributes of System.Xml.XmlSerializer
- .NET Standard 2.0
Install via NuGet package:
PM> Install-Package NetBike.Xml
Install media type formatter for Web API via NuGet package:
PM> Install-Package NetBike.Xml.Formatting
A long time ago in a galaxy far, far away..
A simple object serialization:
var serializer = new XmlSerializer();
serializer.Settings.Namespaces.Clear();
serializer.Settings.OmitXmlDeclaration = true;
/*
Output XML:
<Foo><Id>1</Id><Name>test</Name></Foo>
*/
serializer.Serialize(Console.Out, new Foo
{
Id = 1,
Name = "test"
});
A simple object deserialization:
var serializer = new XmlSerializer();
var xml = "<Foo><Id>1</Id><Name>test</Name></Foo>";
var foo = serializer.Deserialize<Foo>(new StringReader(xml));
An advanced object serialization:
public class Bar
{
[XmlAttribute]
public int Id { get; set; }
public string Name { get; set; }
public Dictionary<int, string> Numbers { get; set; }
}
public static void Example()
{
var keyValuePairContract = new XmlObjectContractBuilder<KeyValuePair<int, string>>()
.SetProperty(x => x.Key, "id", XmlMappingType.Attribute)
.SetProperty(x => x.Value, "value", XmlMappingType.InnerText)
.Build();
var contractResolver = new XmlCustomContractResolver(
new XmlContract[] { keyValuePairContract },
fallbackResolver: new XmlContractResolver(NamingConventions.CamelCase))
var settings = new XmlSerializationSettings
{
Indent = true,
OmitXmlDeclaration = true,
NullValueHandling = XmlNullValueHandling.Include,
ContractResolver = contractResolver
};
var serializer = new XmlSerializer(settings);
var bar = new Bar
{
Id = 1,
Name = null,
Numbers = new Dictionary<int, string>
{
{ 1, "one" },
{ 2, "two" }
}
};
/*
Output XML:
<bar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="1">
<name xsi:nil="true" />
<numbers>
<item id="1">one</item>
<item id="2">two</item>
</numbers>
</bar>
*/
serializer.Serialize(Console.Out, bar);
}
Copyright (c) 2015 NetBike
The MIT License