Simple schema-oriented serialization engine for .NET.
MIT License
Simple schema-oriented serialization engine for .NET
var schema =
Scope.New("http://test.com")
// custom simple types seriablizable to string
.Type(s => Length.Parse(s), x => x.IsValid ? x.ToString() : "")
.Type(s => ExpressionInfo.Parse(s), x => x.ToString())
.Enum(DataElementOutput.Auto);
schema.Element<Report>()
.Attributes()
.Add(x => x.Name)
.End()
.Elements()
.Add(x => x.Width)
.Add(x => x.Body)
.End();
schema.Element<Body>()
.Elements()
.Add(x => x.Height)
.Add(x => x.ReportItems)
.End();
var item = schema.Element<ReportItem>()
.Attributes()
.Add(x => x.Name)
.End()
.Elements()
.Add(x => x.DataElementName)
.Add(x => x.DataElementOutput)
.End();
item.Sub<TextBox>()
.Elements()
.Add(x => x.Value)
.End();
item.Sub<Rectangle>()
.Elements()
.Add(x => x.ReportItems)
.End();
// init report instance
var report = new Report();
// ...
// get xml/json string using schema defined earlier
var xml = schema.ToXmlString(report);
var json = schema.ToString(report, Format.Json);
// load state from xml string
schema.ReadXmlString(xml, report);