序列化协议缓存文件转换成XML /文本格式

编程入门 行业动态 更新时间:2024-10-25 17:18:06
本文介绍了序列化协议缓存文件转换成XML /文本格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我使用协议缓冲区.NET 的http:// code .google / P / protobuf网/ 。

I am using protocol buffer in code.google/p/protobuf-net/.

我安装了Visual Studio支持的版本,我可以只写原文件中的项目,它会自动生成CSHARP类文件。

I installed the visual studio support version, which I can just write proto file in project and it generates csharp class files automatically.

很多,我需要转储文件到XML(或其他文本格式,如果可用)文件时间。我发现,有一种方法Serializer.Serialize(),它接受一个的XmlWriter参数。我试图使用它,但它抱怨说,我所定义的protobuf的类型必须转换为system.Xml.Serialization.IXmlSerializable。

A lot of times that I need to dump the files into xml(or another text format if available) file. I found that there is a method Serializer.Serialize() which takes an XmlWriter parameter. I tried to use it but it complains that the protobuf type I defined must be convertible to system.Xml.Serialization.IXmlSerializable.

在我的情况,我该怎么做,才能为我喜欢的类型可以转换为System.Xml.Serialization.IXmlSerializable?我不想直接改变CS文件,因为它是在飞行时产生的原文件被更改。

In my case, what I should do in order for my type can be convertible to System.Xml.Serialization.IXmlSerializable? I don't want to change the cs file directly since it is generated on the fly when the proto file is changed.

感谢。

推荐答案

protobuf网的不写的XML;该API是为了让你写的protobuf数据中的一个XML流不透明BLOB(基64)。然而,protobuf网通常很乐意让并排侧的XmlSerializer 用途 - 它尊重大多数相同的隐喻。最有可能的,只要使用新的XmlSerializer(typeof运算(YourRootType))来序列化对象将正常工作。事实上,code代从.proto内部处理的一部分的依赖的这一双重性。

Protobuf-net does not write xml; that API is intended to allow you to write protobuf data as an opaque BLOB (base-64) within an xml stream. However, protobuf-net is usually very happy to allow side-by-side use with XmlSerializer - it respects most of the same metaphors. Most likely, simply using new XmlSerializer(typeof(YourRootType)) to serialize your object will work fine. In fact, part of the internal processing for code-generation from .proto relies on this duality.

如果你想的明确的在你产生code XML标记(即 [XmlType将(...)]等)只需使用号码:XML 命令行选项,该选项(如果您使用的IDE工具)也可以通过使用实现; XML 中的自定义工具命名空间(这真的不是很明显,但它是几个地方,我发现在那里将接受额外的数据之一):

If you want explicit xml markers in your generated code (i.e. [XmlType(...)], etc), simply use the p:xml command-line option, which (if you are using the IDE tools) can also be achieved by using ;xml in the "Custom Tool Namespace" (this really isn't obvious, but it is one of the few places I found where it would accept extra data):

基本上,任何进入自定义工具命名空间假设(由protobuf网)是一个分号列表开始与所需的命名空间,后跟发电机选项;因此,; XML 的使用默认的名称空间的,然后添加XML选项,一样做号码:XML 在命令行上。

Basically, anything entered on the "Custom Tool Namespace" is assumed (by protobuf-net) to be a semicolon list starting with the desired namespace, followed by options for the generator; hence ;xml uses the default namespace, then adds the "xml" option, the same as doing p:xml on the command line.

更多推荐

序列化协议缓存文件转换成XML /文本格式

本文发布于:2023-11-11 06:30:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1577635.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:缓存   文本   协议   文件转换成   格式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!