【问题标题】:Generating .proto file from existing Java objects or xsd从现有的 Java 对象或 xsd 生成 .proto 文件
【发布时间】:2021-04-21 16:02:18
【问题描述】:

有没有人知道任何可以生成 .proto 文件的工具?来自现有 xsd 还是来自现有 Java 对象?

我正在使用Apache CXF 进行网络服务调用。返回的对象是从 xsd 自动生成的。

好的,所以我现在想使用协议缓冲区将此数据传递到另一个系统。对象模型非常复杂并且定期更改 - 即每次对象模型更改时我都会获得一个新的 xsd。我希望能够自动生成一个 .proto 文件,以便我可以使用 google 协议缓冲区发送数据。

我四处寻找,但卡住了。

我很高兴

i.) 从 xsd 生成 .proto 文件 或者 ii.) 从 Java 对象(已从 xsd 生成)生成 .proto 文件

除了自己写一些东西之外,我已经找不到任何方法了... 非常感谢您的帮助

【问题讨论】:

  • 我也许可以用 xsd->c#(通过 xsd.exe)->.proto(通过 protobuf-net)来做到这一点——不过可能有点脆弱,尤其是在对象很复杂的情况下。 ...
  • mmm .. 好的,谢谢... 这可能是一种解决方法 - 我不能相信谷歌不提供这样做的工具,因为我确信如果他们希望人们采用他们会假设的这项技术采用现有数据模型并将其转换为 proto 文件将是一个非常常见的用例 - 除非我在这里错过了协议缓冲区的 hte 点......
  • 今天早上我遇到了这个项目。我还没有尝试过,但它声称支持直接从 .xsd 到 .proto:github.com/tranchis/xsd2thrift
  • 所以我最近为了工作不得不这样做,并且我已经开源了代码。它非常简单,但它涵盖了我使用的大多数常见数据结构。您可以从here获取代码

标签: java xsd protocol-buffers


【解决方案1】:

Tranchis 实用程序将 .XSD 文件转换为 .Proto 和 Thrift。

https://github.com/tranchis/xsd2thrift

它非常适合从 XML Schema 转换基本模式类型。

【讨论】:

  • 这个对我有用,有一点预热时间:) 签出项目并在本地运行 jar。 git 上的命令有点过时了。可以检查 jUnits 来创建命令,它可以工作。
【解决方案2】:

尝试来自 Github 的 protostuff-runtime-proto 项目。 如果你有 protostuff RuntimeSchema,你可以通过以下代码将其转换为 .proto 文件:

System.out.println(Generators.newProtoGenerator(schema).generate()); 

【讨论】:

  • 这个项目似乎从未发布过
【解决方案3】:

相信proto-stuff会在一定程度上对你有所帮助。我不确定它是否会为您生成 .proto 文件,但 protostuff-runtime 会自动启用您现有的 pojo 以 ser/deser 为各种格式。

【讨论】:

  • 感谢您的回答,问题是我仍然需要生成 proto 文件,因为我需要将其提供给在 c# 中构建解决方案另一面的开发团队......还有其他想法吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2011-12-22
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多