使用ServiceStack从数据库中序列化XML

时间:2015-02-24 10:07:37

标签: c# xml json serialization servicestack

我正在使用的应用程序有许多用户定义的屏幕和字段,这些屏幕和字段以XML格式存储在SQL数据库中。

我正在使用ServiceStack构建一个在应用程序中使用的Web API。我需要做的一件事是从XML获取用户定义的数据并通过ServiceStack传递出去。我有点担心从数据库查询的成本,从XML序列化到C#对象(服务),然后再次将ServiceStack序列化为JSON或任何请求的格式。我考虑过将存储为JSON blob而不是XML,但我还需要能够纯粹从SQL领域内查询数据。

我有几个问题: 有没有人有任何关于尽量减少序列化成本的建议?

ServiceStack是否具有可能有帮助的内置功能?

1 个答案:

答案 0 :(得分:0)

XML序列化程序特别难以反序列化为它无法了解的POCO,并且可能需要对归因于[DataContract]XmlSerializer Attributes的目标模型的额外提示,具体取决于哪个您选择的.NET XML序列化程序。 ServiceStack包含了这两个实现IStringSerializable接口的序列化器的包装器:

var dto = DataContractSerializer.Instance.Parse<T>(xml)
var dto = XmlSerializableSerializer.Instance.Parse<T>(xml)

然而,由于他们的XML序列化程序相当严格和脆弱,我倾向于使用内置的XLinq Extension methods,这样可以轻松遍历XML文档并获取值希望如在中看到的那样 XlinqExtensionsTests