{"id":13431681,"url":"https://github.com/ExtendedXmlSerializer/home","last_synced_at":"2025-03-16T12:31:15.273Z","repository":{"id":41203548,"uuid":"64928521","full_name":"ExtendedXmlSerializer/home","owner":"ExtendedXmlSerializer","description":"A configurable and eXtensible Xml serializer for .NET.","archived":false,"fork":false,"pushed_at":"2024-03-23T11:39:33.000Z","size":9188,"stargazers_count":328,"open_issues_count":2,"forks_count":46,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-05-22T08:12:08.937Z","etag":null,"topics":["custom-serializer","customization","dotnet","extensibility","extensions","hacktoberfest","poco","serialization","serializer","xml"],"latest_commit_sha":null,"homepage":"https://extendedxmlserializer.github.io/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExtendedXmlSerializer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-04T11:18:59.000Z","updated_at":"2024-06-19T20:02:07.235Z","dependencies_parsed_at":"2024-06-19T20:01:53.508Z","dependency_job_id":"576c6fea-75f5-4f48-b856-464a8132bc96","html_url":"https://github.com/ExtendedXmlSerializer/home","commit_stats":null,"previous_names":["wojtpl2/extendedxmlserializer"],"tags_count":86,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExtendedXmlSerializer%2Fhome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExtendedXmlSerializer%2Fhome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExtendedXmlSerializer%2Fhome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExtendedXmlSerializer%2Fhome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExtendedXmlSerializer","download_url":"https://codeload.github.com/ExtendedXmlSerializer/home/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221663621,"owners_count":16859867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-serializer","customization","dotnet","extensibility","extensions","hacktoberfest","poco","serialization","serializer","xml"],"created_at":"2024-07-31T02:01:04.996Z","updated_at":"2024-10-27T10:32:14.166Z","avatar_url":"https://github.com/ExtendedXmlSerializer.png","language":"C#","readme":"ExtendedXmlSerializer\r\n=====================\r\n\r\n[![Build status](https://ci.appveyor.com/api/projects/status/ub776yxp0nj535qp?svg=true)](https://ci.appveyor.com/project/ExtendedXmlSerializer/extendedxmlserializer) [![Nuget](https://img.shields.io/nuget/v/ExtendedXmlSerializer.svg)](https://www.nuget.org/packages/ExtendedXmlSerializer/)\r\n\r\n\u003cimg src=\"https://extendedxmlserializer.github.io/img/logoBig.png\" height=\"200px\"\u003e\r\n\r\n\r\nWelcome!\r\n========\r\n\r\nWelcome to ExtendedXMLSerializer's GitHub repository.  Here you will find a .NET serializer that:\r\n\r\n- Specializes in [POCO](https://en.wikipedia.org/wiki/Plain_old_CLR_object)-based object graph serialization\r\n- Features a powerful extension model\r\n- Operates in the tried-and-trusted dependable XML format. 💖\r\n\r\n\"But why?\"\r\n==========\r\n\r\nThe classic `System.Xml.XmlSerializer` poses some challenges:\r\n\r\n- Does not support properties that are defined with interface types\r\n- Does not support read-only collection properties (like Xaml does)\r\n- Does not support parameterized constructors (immutable objects)\r\n- Does not support private constructors\r\n- Does not support serialization of class with circular reference or class with interface property\r\n- If you want create custom serializer, your class must inherit from `IXmlSerializable` or `ISerializable`.  This takes the \"plain\" out of [POCO](https://en.wikipedia.org/wiki/Plain_old_CLR_object). 😁\r\n- No migration mechanism for XML based on older code model\r\n\r\nExtendedXmlSerializer addresses a lot of these problems and much much more!\r\n\r\n- 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](https://github.com/ExtendedXmlSerializer/home/issues/new) and we'll take a look at it.\r\n- Custom serializer registration by type or member\r\n- Serialization of references, handling circular references without endlessly looping\r\n- All configurations (migrations, custom serializer...) are outside the class and not coupled to attributes or messy, arcane conventions\r\n- Migrate old XML based on an older schema to a current schema\r\n- Property encryption\r\n- Support `XmlElementAttribute`, `XmlRootAttribute`, and `XmlTypeAttribute` for identity resolution\r\n- Additional attribute support: `XmlIgnoreAttribute`, `XmlAttributeAttribute`, and `XmlEnumAttribute`\r\n- Deserialization xml from classic `XmlSerializer` (mostly, [details in FAQ](https://github.com/ExtendedXmlSerializer/home/wiki/FAQs#systemxmlserializer-vs-extendedxmlserializer))\r\n\r\n(\\*Yes, this even -- and *especially* -- means classes with properties that have an interface property type!)\r\n\r\nSupported platforms:\r\n\r\n- .NET Standard 2.0\r\n- .NET 4.5.2 ([as of #273](https://github.com/ExtendedXmlSerializer/home/issues/273))\r\n\r\nUsage\r\n=====\r\n\r\nExtendedXmlSerializer 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!\r\n\r\nExample class:\r\n\r\n``` csharp\r\nclass Subject {\r\n    public int Number { get; set; }\r\n    public string Message { get; set; }\r\n}\r\n```\r\n\r\nConfigure, create, and serialize:\r\n\r\n``` csharp\r\nIExtendedXmlSerializer serializer = new ConfigurationContainer().UseAutoFormatting()\r\n                                                                .UseOptimizedNamespaces()\r\n                                                                .EnableImplicitTyping(typeof(Subject))\r\n                                                                // Additional configurations...\r\n                                                                .Create();\r\n\r\nvar instance = new Subject {Message = \"Hello World!\", Number = 42};\r\nvar document = serializer.Serialize(new XmlWriterSettings {Indent = true},\r\n                                    instance);\r\n```\r\n\r\nMAKE THE PRETTY XML!!! 😁😁😁\r\n\r\n(contents of the `document` variable above:)\r\n\r\n``` xml\r\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\r\n\u003cSubject Number=\"42\" Message=\"Hello World!\" /\u003e\r\n```\r\n\r\nThe above demonstrated code can be found in the form of [a passing test within our test suite here](https://github.com/ExtendedXmlSerializer/home/blob/a7667b3f56ce15e3146f0ca061e7dae162b1a448/test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue282Tests_README.cs#L11-L33).\r\n\r\nInstallation\r\n============\r\n\r\nFrom your favorite [Package Manager Console](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-powershell):\r\n\r\n```\r\nInstall-Package ExtendedXmlSerializer\r\n```\r\n\r\nOr if you are brave and want to try out our preview feed:\r\n\r\n```\r\nInstall-Package ExtendedXmlSerializer -Source https://ci.appveyor.com/nuget/extendedxmlserializer-preview\r\n```\r\n\r\nKnown Issues\r\n============\r\n\r\nWhile ExtendedXmlSerializer is [very nice](https://tenor.com/view/nice-very-nice-gif-4295060), it does have some known issues that have been identified by its owners.  These issues are considered too significant to address and have been consolidated under a dedicated label for your review here:\r\n\r\nhttps://github.com/ExtendedXmlSerializer/home/labels/known%20issue\r\n\r\nPlease review these issues before submitting a new issue and/or trialing ExtendedXmlSerializer.\r\n\r\nAdditionally, please note that [ExtendedXmlSerializer is now essentially in maintenance mode as of March 2020](https://github.com/ExtendedXmlSerializer/home/issues/383).  We will continue to monitor for any major bugs, so [feel free to post an issue](https://github.com/ExtendedXmlSerializer/home/issues/new) if you find one.  However, major tasks and/or feature requests and the like will be deferred to the community.\r\n\r\nFeatured Documentation\r\n======================\r\n\r\n- [FAQs](https://github.com/ExtendedXmlSerializer/home/wiki/FAQs) - Probably the first place to go if you have a question.\r\n\r\n- [Conceptual Topics](https://github.com/ExtendedXmlSerializer/home/wiki) - From our wiki.\r\n  - [The Basics](https://github.com/ExtendedXmlSerializer/home/wiki/The-Basics)\r\n  - [Features](https://github.com/ExtendedXmlSerializer/home/wiki/Features#experimental)\r\n  - [API Overview](https://github.com/ExtendedXmlSerializer/home/wiki/API-Overview)\r\n  - [Example Scenarios](https://github.com/ExtendedXmlSerializer/home/wiki/Example-Scenarios)\r\n\r\n- [Documentation Site](https://extendedxmlserializer.github.io/documentation/) - A resource deployed on every release.\r\n  - [API Reference](https://extendedxmlserializer.github.io/documentation/reference/)\r\n  - [Concepts and Topics](https://extendedxmlserializer.github.io/documentation/conceptual/) (Mirror of our wiki above)\r\n\r\n(Looking to upgrade from 1.x?  We got you [covered here](https://github.com/ExtendedXmlSerializer/home/wiki/How-to-Upgrade-from-v1.x-to-v2).)\r\n\r\nWant to Contribute?\r\n===================\r\n\r\nWe 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.\r\n\r\n![Keep Calm and Code](https://i.imgur.com/6wP6Zqy.png)\r\n\r\nIf you view our [FAQs](https://github.com/ExtendedXmlSerializer/home/wiki/FAQs) and still have a question, [open up a new issue](https://github.com/ExtendedXmlSerializer/home/issues/new)!  We'll do our best to [meet you there with sample code](https://github.com/ExtendedXmlSerializer/home/issues?q=is%3Aissue+label%3ADocumentation+sort%3Aupdated-desc) to help get you on your way.\r\n\r\nNotable Contributors\r\n========================\r\n\r\n- [Wojciech Nagórski](https://github.com/WojciechNagorski) - v1.x Author.\r\n- [Mike-E-angelo](https://github.com/Mike-E-angelo) - v2.x+ Author.\r\n\r\nMentions\r\n========\r\n\r\n[\u003cimg src=\"https://github.com/DragonSpark/blog.dragonspark.us/blob/a49ead8aa87f61dd6c4d6f5999e6d01b8823d57b/static/images/ReSharper.png?raw=true\" height=\"200\" width=\"200\" /\u003e](https://www.jetbrains.com/resharper/download/)\r\n\r\nExtendedXmlSerializer is proudly developed and maintained with ReSharper Ultimate.\r\n\r\n\u003cbr /\u003e\r\n","funding_links":[],"categories":["Frameworks, Libraries and Tools"],"sub_categories":["Serialization"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FExtendedXmlSerializer%2Fhome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FExtendedXmlSerializer%2Fhome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FExtendedXmlSerializer%2Fhome/lists"}