Protobuffers to XML

时间:2018-02-16 06:52:02

标签: java protocol-buffers

我想将我的Google协议对象转换为XML格式。在那里我想保留一些字段作为属性。 而不是:

<field>
    <name>ApiFieldHeaderName</name>
    <maxLength>50</maxLength>
</field>

我想要关注:

<field name="ApiFieldHeaderName" maxLength="50" ></field>

我的协议是

string name = 1;
int32 maxLength = 2;

然后我通过了一些论坛并使用了 xml_disposition

[(xml_disposition) = ATTRIBUTE]

但是,我收到错误:

  

选项“(xml_disposition)”未知。

我使用的是proto3,语言是Java。

syntax = "proto3";
option optimize_for = SPEED;

1 个答案:

答案 0 :(得分:1)

我相信你从2009年的protobuf新闻组的侧面讨论中找到了xml_disposition。然而,提到的选项纯粹是假设的。据我所知:没有这样的xml_disposition自定义选项 - 至少,不是标准选项 - 并且没有代码生成器查找它。 Google protobuf源中不存在xml_disposition,并且当前版本的protoc(3.5.1)无法识别它并且是内置选项。

所以:

  • 是的,可以在.proto中添加自定义扩展,您可以使用
  • 注释字段(等)
  • 是的,您可以编写自己的codegen工具来检查这些自定义选项并发出其他生成的代码来实现您想要的内容
  • 但默认情况下不会出货

附注:自定义选项必须在&#34; proto2&#34;中定义。语法文件,但是&#34; proto3&#34;文件仍然可以导入并使用&#34; proto2&#34;中的那些自定义选项。文件。