Click here to Skip to main content
15,878,814 members
Articles / Programming Languages / XML

Yet Another XML Serialization Library for the .NET Framework

Rate me:
Please Sign up or sign in to vote.
4.92/5 (91 votes)
2 Oct 2012MIT24 min read 507.7K   207  
A flexible XML serialization library that lets developers design the XML file structure, and select the exception handling policy. YAXLib supports polymorphic serialization and serializing generic and non-generic collection classes and arrays.
[1.1] April 13, 2009
    * Updating the article
	* Fixing some minor bugs
	* Enhancing the demo application

[1.0.10] April 12, 2009
   * YAXLib/YAXSerializer.cs, YAXLib/YAXExceptionHandlingPolicies.cs:
     Added an Ignore item to the YAXExceptionTypes enum.
     Added YAXSerializationOptions enum, and a corresponding argument to the 
      YAXSerializer constructor, which currently lets the developer choose 
      whether to serialize null properties or not.
     If the developer chooses DontSerializeNullObjects as an option, then
      the serialization and deserialization processes keep the null properties
      status intact. Also the developer may select the error type of those properties
      to Ignore (via the ErrorIfMissed attribute or at construction time), so that 
      their absence is not reported as a problem.

[1.0.9] April 11, 2009
   * YAXLib/YAXAttributes.cs, YAXLib/YAXSerializer.cs:
     Added the support for inserting comments through the [YAXComment] attribute.
     The comments are only applicable to classes.

[1.0.8] April 11, 2009
   * DemoApplication:
     Added a GeneralToString provider which convert an object to string based upon its
     public properties via Reflection. This method is careful about null references, therefore
     we will not observe NullReferenceException in ToString methods.

[1.0.7] April 10, 2009
   * YAXLib/YAXAttributes.cs, YAXLib/YAXSerializer.cs:
     added the [YAXNotCollection] attribute. If some class implements the IEnumerable 
     interface, it is known by YAXLib as a collection class. This attribute prevents
     YAXLib to just iterate through the items provided through the IEnumerable interface;
     but to serialize the actual properties of the class, just as the way it is done with
     other classes.

[1.0.6] April 10, 2009
   * YAXLib/YAXAttributes.cs, YAXLib/YAXSerializer.cs:
     added support for controlling the serialization behaviour of generic dictionary 
     classes via YAXDictionary attribute. With this attribute one can specify: 
     - aliases for key and value parts
     - whether key/value should be serialized as XML attribute or XML element.
     - the format strings for serializing key/value parts.
  
[1.0.5] April 09, 2009
   * YAXLib/YAXAttributes.cs, YAXLib/YAXExceptions, YAXLib/YAXSerializer.cs: 
     adding support for format strings which could be used while serializing 
     objects with the given formats. Added YAXFormatAttribute, and 
     YAXInvalidFormatProvided exception class. 


[1.0.4] April 05, 2009
   * YAXLib/YAXAttributes.cs, YAXLib/YAXSerializer.cs: 
     adding support for ignoring whitespace characters, while deserializing 
     serially serialized collection classes, through IsWhiteSpaceSeparator 
     property of YAXCollectionAttribute class.

[1.0.3] March 26, 2009
   * YAXLib/YAXSerializer.cs: 
     fixing the bug, that the library did not ignore static properties.

[1.0.2] March 25, 2009
   * YAXLib/YAXSerializer.cs: 
     fixing the bug on deserializing null nested objects.
     Thanks go to Anton Levshunov for reporting this bug.

[1.0.1] March 24, 2009
   * YAXLib/YAXSerializer.cs: 
     fixing the bug that deserializing collection classes 
     attributed as [YAXDontSerialize] lead to a NullReferenceException. 
     Thanks go to Peter Zacho for reporting this bug.

[1.0.0] March 13, 2009
   * First version

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
Software Developer
Australia Australia
A software designer and developer

Comments and Discussions