ExtendedXmlSerializer / Home

Licence: mit
A configurable and eXtensible Xml serializer for .NET.

Projects that are alternatives of or similar to Home

Android
Delta Icon Pack for Android
Stars: ✭ 137 (-34.13%)
Mutual labels:  hacktoberfest, customization
Woodstox
The gold standard Stax XML API implementation. Now at Github.
Stars: ✭ 145 (-30.29%)
Mutual labels:  hacktoberfest, xml
Autocser
AutoCSer is a high-performance RPC framework. AutoCSer 是一个以高效率为目标向导的整体开发框架。主要包括 TCP 接口服务框架、TCP 函数服务框架、远程表达式链组件、前后端一体 WEB 视图框架、ORM 内存索引缓存框架、日志流内存数据库缓存组件、消息队列组件、二进制 / JSON / XML 数据序列化 等一系列无缝集成的高性能组件。
Stars: ✭ 140 (-32.69%)
Mutual labels:  xml, serialization
Hprose Js
Hprose is a cross-language RPC. This project is Hprose 2.0 RPC for JavaScript
Stars: ✭ 133 (-36.06%)
Mutual labels:  serializer, serialization
Xbmc
Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS and Windows.
Stars: ✭ 13,175 (+6234.13%)
Mutual labels:  hacktoberfest, xml
Flatsharp
Fast, idiomatic C# implementation of Flatbuffers
Stars: ✭ 133 (-36.06%)
Mutual labels:  serializer, serialization
Xmlutil
XML Serialization library for Kotlin
Stars: ✭ 143 (-31.25%)
Mutual labels:  xml, serialization
Symfony Jsonapi
JSON API Transformer Bundle for Symfony 2 and Symfony 3
Stars: ✭ 114 (-45.19%)
Mutual labels:  serializer, serialization
Hprose Php
Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP
Stars: ✭ 1,952 (+838.46%)
Mutual labels:  serializer, serialization
Serializer
With the Serializer component it's possible to handle serializing data structures, including object graphs, into array structures or other formats like XML and JSON. It can also handle deserializing XML and JSON back to object graphs.
Stars: ✭ 2,021 (+871.63%)
Mutual labels:  xml, serializer
Swiftmsgpack
💬 Fast & Lightweight MsgPack Serializer & Deserializer for Swift
Stars: ✭ 128 (-38.46%)
Mutual labels:  serializer, serialization
Ng Polymorpheus
Polymorpheus is a tiny library for polymorphic templates in Angular.
Stars: ✭ 191 (-8.17%)
Mutual labels:  hacktoberfest, customization
Js2xml
Convert Javascript code to an XML document
Stars: ✭ 124 (-40.38%)
Mutual labels:  hacktoberfest, xml
Protobuf Java Format
Provide serialization and de-serialization of different formats based on Google’s protobuf Message. Enables overriding the default (byte array) output to text based formats such as XML, JSON and HTML.
Stars: ✭ 134 (-35.58%)
Mutual labels:  xml, serialization
Lora Serialization
LoraWAN serialization/deserialization library for The Things Network
Stars: ✭ 120 (-42.31%)
Mutual labels:  serializer, serialization
Notion Enhancer
an enhancer/customiser for the all-in-one productivity workspace notion.so (app)
Stars: ✭ 3,114 (+1397.12%)
Mutual labels:  hacktoberfest, extensions
Java
jsoniter (json-iterator) is fast and flexible JSON parser available in Java and Go
Stars: ✭ 1,308 (+528.85%)
Mutual labels:  serializer, serialization
Hprose Delphi
Hprose is a cross-language RPC. This project is Hprose 2.0 for Delphi and FreePascal
Stars: ✭ 100 (-51.92%)
Mutual labels:  serializer, serialization
Configurate
A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation
Stars: ✭ 148 (-28.85%)
Mutual labels:  hacktoberfest, xml
Qxorm
QxOrm library - C++ Qt ORM (Object Relational Mapping) and ODM (Object Document Mapper) library - Official repository
Stars: ✭ 176 (-15.38%)
Mutual labels:  xml, serialization

ExtendedXmlSerializer

Build status Nuget

Welcome!

Welcome to ExtendedXMLSerializer's GitHub repository. Here you will find a .NET serializer that:

  • Specializes in POCO-based object graph serialization
  • Features a powerful extension model
  • Operates in the tried-and-trusted dependable XML format. 💖

"But why?"

The classic System.Xml.XmlSerializer poses some challenges:

  • Does not support properties that are defined with interface types
  • Does not support read-only collection properties (like Xaml does)
  • Does not support parameterized constructors (immutable objects)
  • Does not support private constructors
  • Does not support serialization of class with circular reference or class with interface property
  • If you want create custom serializer, your class must inherit from IXmlSerializable or ISerializable. This takes the "plain" out of POCO. 😁
  • No migration mechanism for XML based on older code model

ExtendedXmlSerializer addresses a lot of these problems and much much more!

  • Serializes and deserializes pretty much any POCO you throw at it*: class, struct, generics, primitives, generic List and Dictionary, Array, Enum and much much more! If you find a class that doesn't get serialized, let us know and we'll take a look at it.
  • Custom serializer registration by type or member
  • Serialization of references, handling circular references without endlessly looping
  • All configurations (migrations, custom serializer...) are outside the class and not coupled to attributes or messy, arcane conventions
  • Migrate old XML based on an older schema to a current schema
  • Property encryption
  • Support XmlElementAttribute, XmlRootAttribute, and XmlTypeAttribute for identity resolution
  • Additional attribute support: XmlIgnoreAttribute, XmlAttributeAttribute, and XmlEnumAttribute
  • Deserialization xml from classic XmlSerializer (mostly, details in FAQ)

(*Yes, this even -- and especially -- means classes with properties that have an interface property type!)

Supported platforms:

Usage

ExtendedXmlSerializer uses a ConfigurationContainer to store configurations and extensions. Once this container is configured as desired, call its Create method to create a serializer and serialize!

Example class:

class Subject {
    public int Number { get; set; }
    public string Message { get; set; }
}

Configure, create, and serialize:

IExtendedXmlSerializer serializer = new ConfigurationContainer().UseAutoFormatting()
                                                                .UseOptimizedNamespaces()
                                                                .EnableImplicitTyping(typeof(Subject))
                                                                // Additional configurations...
                                                                .Create();

var instance = new Subject {Message = "Hello World!", Number = 42};
var document = serializer.Serialize(new XmlWriterSettings {Indent = true},
                                    instance);

MAKE THE PRETTY XML!!! 😁😁😁

(contents of the document variable above:)

<?xml version="1.0" encoding="utf-8"?>
<Subject Number="42" Message="Hello World!" />

The above demonstrated code can be found in the form of a passing test within our test suite here.

Installation

From your favorite Package Manager Console:

Install-Package ExtendedXmlSerializer

Or if you are brave and want to try out our preview feed:

Install-Package ExtendedXmlSerializer -Source https://ci.appveyor.com/nuget/extendedxmlserializer-preview

Known Issues

While ExtendedXmlSerializer is very nice, it does have some known issues that have been identified by the owners as such. These issues are considered too significant to address and have been consolidated under our label for your review here:

https://github.com/ExtendedXmlSerializer/home/labels/known%20issue

Please review these issues before submitting a new issue and/or trialing ExtendedXmlSerializer.

Featured Documentation

(Looking to upgrade from 1.x? We got you covered here.)

Want to Contribute?

We are a smaller project and are open to any contributions or questions. We do not have a formal code of conduct and would like to keep it that way.

Keep Calm and Code

If you view our FAQs and still have a question, open up a new issue! We'll do our best to meet you there with sample code to help get you on your way.

Notable Contributors

Mentions

ExtendedXmlSerializer is proudly developed and maintained with ReSharper Ultimate.



Magical debugging is courtesy of OzCode.



File comparison and conflict resolution handled by DevArt's Code Compare.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].