从 Proto 转换为 XSD
Posted
技术标签:
【中文标题】从 Proto 转换为 XSD【英文标题】:Convert from Proto to XSD 【发布时间】:2014-07-17 17:18:50 【问题描述】:我需要能够从proto转换到xsd,我知道有一些工具可以从XSD转换到PROTO,但是我需要反对。
可以在 .NET 或 Java 中
谢谢
【问题讨论】:
如果你愿意,我可能分两步完成 - 不理想,但可行...通过 c# (protogen) 然后 xsd.exe 在编译的 DTO 模型上 【参考方案1】:您最终没有指定要接收的 XSD 示例。实际上,有多种方式可以在 XSD 中表示 Protobuf 消息。
可能会出现一些问题:
您希望如何存储 PROTO 字段:作为属性或元素(对于像string/bool/int
这样的简单类型)?
您是否希望有固定的 XML 元素顺序? (换句话说,您想在您的xs:complexType
定义中使用xs:sequence
或xs:all
吗?)
到目前为止,我也遇到了同样的问题。我解决了我的任务并描述了它in blog post。
我的任务的解决方案是:
使用protogen.exe
将PROTO 序列化为XML 表示
然后运行自定义编写的 XSLT 以生成 XSD 架构
其实I wrote XSLT为protogen.exe
生成XSD。使用它,this PROTO 将转换为this XSD。
您可以根据需要自定义此 XSLT。希望这会有所帮助!
【讨论】:
我关注了您的博文,这对我很有帮助。不幸的是,我对 XSLT 不太熟悉,需要 1) 将 proto 字段编写为元素,以及 2) 使用 xs:sequence 而不是 xs:all。请问您能帮忙吗? @hshah,试试这个 xslt,希望它能做你想做的事:github.com/halex2005/protobuf-to-xsd/blob/master/xsd.xslt【参考方案2】:我不得不分别使用Proto to JSON 转换工具和JSON to XSD 转换工具来解决不同的问题。可能对你的情况有所帮助..
【讨论】:
Protomak 不是用其他东西制作 .proto 吗?以上是关于从 Proto 转换为 XSD的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 JSON Schema 转换为 XSD? [关闭]