2

我有大量专有模式的 XML 文件 - XML 文件定义二进制通信协议(消息结构)。

我想利用 Google 的协议缓冲区技术。

我正在使用现有代码将 XML 文件加载到对象模型中(在内存中)。我想从该对象模型生成一个 .proto 文件。

所以基本上我正在寻找的是代码/库(在 C#/.NET 中),它将 .proto 文件格式表示为对象模型,并且可以将该对象模型保存到 .proto 文件中。

我看了一下 Jon Skeet 的 dotnet-protobufs,我想我明白它的作用(根据 .proto 文件生成 c# 代码)

但是,我不知道我是否可以将它用于我的项目(它可能有 .proto 格式的对象模型,但可能只有代码可以解析这种格式而不是写出来)

4

2 回答 2

2

我的代码只能序列化和反序列化为二进制和文本。但是,我相信Marc Gravell 的项目具有 XML 功能。事实上,我相信他生成 C# 代码的基础是加载 .proto 文件的二进制版本(它本身被编码为 protobuf),将其写为 XML,然后将 XSLT 应用于它......

于 2008-12-04T22:34:26.463 回答
2

protobuf-net(我在 .NET 中的协议缓冲区版本)对生成 proto 文件具有原始支持,但填补空白并不难。我首先专注于核心引擎,然后是从 proto 生成 C#。编写一个 xslt 从对象模型生成一个原型不会有太大的不同。不过这需要几天时间……(我现在时间有限)。

如果这有用,请告诉我。

对于信息,protobuf-net 引擎与大多数XmlSerializer类(和DataContractSerializer,和最近BinaryFormatter)兼容 - 所以如果您的代码当前作为 xml 工作,我们可能可以让它在 protobuf-net 中工作。没有保证,当然...

于 2008-12-04T23:33:11.913 回答