2008-12-04 110 views
1

我有一套合适模式的XML文件 - XML文件定义了二进制通信协议(消息结构)。生成一个协议缓冲区定义

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

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

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

我看了看乔恩斯基特的DOTNET-protobufs,我想我明白它(根据.proto文件生成C#代码)

不过,我并没有弄清楚,如果我可以用它我的项目(它可能在那里有.proto格式的对象模型,但可能只有代码可以解析这个格式并且不会写出来)

回答

2

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

如果这会有用,请让我知道。

对于信息的protobuf网发动机与大多数XmlSerializer类(和DataContractSerializer,最近BinaryFormatter)兼容 - 所以,如果你的代码目前是XML,我们或许可以得到它在protobuf网工作。没有保证,当然...

+0

非常interresting!它现在支持吗? – asgerhallas 2009-05-13 17:10:05

2

我的代码只能序列化和反序列化为二进制和文本。不过,我相信Marc Gravell's project具有XML功能。事实上,我相信他基于加载.proto文件的二进制版本(这本身编码为protobuf的),写出来的XML,然后应用XSLT到它的C#代码...

+0

确实我做;我一直希望添加代码来填充内存模型中的描述符,将描述符序列化为xml,然后通过xslt运行它以生成原型 - 即与现在完全相反。它应该工作,虽然...几天的努力,但。 – 2008-12-04 23:34:25