gpt4 book ai didi

c# - 如何将 XML 数据转换为二进制可交付成果?

转载 作者:数据小太阳 更新时间:2023-10-29 02:59:40 25 4
gpt4 key购买 nike

我们有一个应用程序需要在启动时加载大量配置数据。数据存储在一个 XML 文件中,该文件目前为 40MB,但会增长到 100MB 甚至更多。此数据将在开发过程中发生变化,但不会在发布之间发生变化。

我们正在寻找一种方法来加快“固定”数据集的加载过程,一个想法导致了这个问题:

将 xml 文件转换为可以作为二进制文件传送的文件的最简单/最有效的方法是什么?

例如,我们可以生成一个静态类,在其初始化方法中包含大量“new objectFromXML (param1, param2, ..., paramn)”行,或者我们可以使用一个包含数据的巨大数组的对象。所有这些都可以轻松完成,但我怀疑我们的问题有更优雅的解决方案。如有任何意见,我们将不胜感激。

最佳答案

protobuf-net可以在相同的类定义上同时与二进制文件(Google 高效的“ Protocol Buffer ”格式)和 xml 兼容*。

如果您的 xml 是基于元素的并且包含诸如 [XmlElement(Order = 1)] 之类的属性,它甚至可以在没有 任何 更改的情况下工作(要工作,它需要能够找到每个属性的唯一编号,你看)。请注意,如果您使用继承 ([XmlInclude]),您将需要添加其他属性(同样,要指定一个数字 - 通过类似的 [ProtoInclude])

否则,您可以添加额外的属性,并完成工作;只需调用 Serializer.Serialize

Result : 更小、更快的序列化。

*=作为证明,代码生成器实际上是这样工作的:将“.proto”DSL 编译为二进制文件(“protoc”),将二进制文件加载到对象模型(“protobuf-net”)中,编写为xml (XmlSerializer) ,通过xslt运行得到C#。


另一种方法可能是通过 xslt 将 xml 运行到 C# 中并编译它,但是……很难看。我在绝对需要的时候自己做了这件事;打破反光镜太可怕了! (no, really)。

关于c# - 如何将 XML 数据转换为二进制可交付成果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com