OVSXmlSerializer 1.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package OVSXmlSerializer --version 1.1.2                
NuGet\Install-Package OVSXmlSerializer -Version 1.1.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OVSXmlSerializer" Version="1.1.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OVSXmlSerializer --version 1.1.2                
#r "nuget: OVSXmlSerializer, 1.1.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install OVSXmlSerializer as a Cake Addin
#addin nuget:?package=OVSXmlSerializer&version=1.1.2

// Install OVSXmlSerializer as a Cake Tool
#tool nuget:?package=OVSXmlSerializer&version=1.1.2                

Odd's Very Special Xml Serializer

..Or OVSXmlSerializer for short.

The system itself works very similar to how the XML serializer works normally, but is meant to be worked with the object or more 'undefined' data that the ordinary XML serializer have difficulty handling. You can turn this off for more traditional formatting with the config class, but it does reveal the issue once again.

Unlike the traditional XML Serializer, this will use the type parameters in the class to automatically differentiate enums and arrays, which will remove the need to mark fields as [XmlArray] or [XmlEnum].

Explicit Types

The unique function of this XML serializer over others is its explicit type handling. What this does is that it allows it to reserve its derived types when considering base types, down to the level of object. This feature can be turned on or off.

This feature is enabled by default, but creating XmlSerializerConfig, this can be turned off. It will also implicitly convert System.Xml.XmlWriterSettings to the config to ensure smooth transtion between systems.

There are 3 options you can enable:

  1. Always Included - Regardless of the situation, it will write the type.
  2. Smart Types - When defined out of the base field, it will write the type.
  3. Ignore - It will never write the type, which may show incorrect behaviour.

Serializing

Like the default system XML serializer, they pose the same requirements such as:

  1. Requiring to have a public or private parameterless constructor.
  2. Having all fields follow the same constraint as above.

There are two serializers, the generic and the non-generic. The non-generic derives from the generic as object for performance reasons, and is created as instances due to configurations.

The method returns a MemoryStream, a stream that can be used for overriding specific file systems as such, but can be converted to a string if needed by other systems.

The system provides its own interface called IXmlSerializable, which is not the same as the traditional system. Luckily, instead of using XmlReader, it uses a XmlNode instead. XmlWriter is here to stay, though.

Deserializing

Requires the stream or XML file to retrieve the object mentioned by the XML. It is relatively easy enough, get a file that is generated by the OVSXmlSerializer and it will de-parse it easily, assuming that you know the derived types.

Attributes

Here are a few attributes that uses in its own OVSXmlSerializer namespace. Note that System.Xml.Serialization will be converted automatically if needed.

  1. [XmlIgnore] Ignores the field completely
  2. [XmlAttribute] Adds primitive value as a single attribute to the class being serialized
  3. [XmlNamedAs(string name)] Changes the field name or object name to something else on XML serialization.
  4. [XmlText] Assuming that all other fields are attributes or ignored, this will write the primitive value

Arrays are automatically serialized as if it is an ordinary list or dictionary.

Product 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. 
.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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .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
4.0.0 62 7/10/2024
4.0.0-pre2 66 6/14/2024
4.0.0-pre1 56 6/14/2024
3.0.2 155 9/27/2023
3.0.1 114 9/25/2023
3.0.0 123 9/23/2023
3.0.0-pre2 91 9/21/2023
3.0.0-pre1 95 9/20/2023
2.0.4 155 5/4/2023
2.0.3 174 4/15/2023
2.0.2 163 4/11/2023
2.0.1 193 4/6/2023
2.0.0 176 4/6/2023
1.1.5 225 3/24/2023
1.1.4 219 3/12/2023
1.1.3 237 3/8/2023
1.1.2 215 3/5/2023
1.1.1 217 3/2/2023
1.1.0 221 2/28/2023
1.0.2 233 2/27/2023
1.0.1 231 2/26/2023
1.0.1-beta-5 129 2/25/2023
1.0.1-beta-4 125 2/25/2023
1.0.1-beta-3 116 2/23/2023
1.0.1-beta-2 132 2/21/2023
1.0.1-beta 206 2/20/2023
1.0.0-beta 188 2/20/2023

- Fixed an oversight where because strings are not value types and assigned as attributes, it causes an error.
- Added a more 'defined' description for the nuget package.