我想将我的 Google 协议(protocol)对象转换为 XML 格式。我想保留一些字段作为属性。 而不是:
<field>
<name>ApiFieldHeaderName</name>
<maxLength>50</maxLength>
</field>
我想要以下内容:
<field name="ApiFieldHeaderName" maxLength="50" ></field>
我的协议(protocol)是
string name = 1;
int32 maxLength = 2;
然后我浏览了一些论坛并使用了 xml_disposition
[(xml_disposition) = ATTRIBUTE]
但是,我收到错误:
Option "(xml_disposition)" unknown.
我使用的是proto3,语言是Java。
syntax = "proto3";
option optimize_for = SPEED;
最佳答案
我相信您已经从 2009 年 protobuf 新闻组的边讨论中找到了 xml_disposition
。不过,提到的选项纯粹是假设的。据我所知:不存在这样的 xml_disposition 自定义选项 - 至少不是标准选项 - 并且没有代码生成器寻找它。 Google protobuf 源代码中没有提及 xml_disposition
,并且当前版本的 protoc
(3.5.1) 无法识别它和内置选项。
所以:
- 是的,可以在 .proto 中添加自定义扩展,您可以使用它来注释字段(等)
- 是的,您可以编写自己的代码生成工具来检查这些自定义选项,并生成额外的生成代码来实现您想要的内容
- 但默认情况下这些都不会发货
旁注:自定义选项必须在“proto2”语法文件中定义,但“proto3”文件仍然可以从“proto2”文件导入和使用这些自定义选项。
关于java - 原始缓冲区到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821485/