【发布时间】:2011-10-19 19:10:15
【问题描述】:
我正在编写一个 Java 应用程序,该应用程序将受模式限制的 XML 作为输入并需要将其转换为 protbuf。无需进行任何处理;我只需要从 XML 中获取一些字段并使用它们来创建一个 protobuf。
我希望我可以使用 JIBX 将 XML 直接映射到我的 protobuf 的 Builder 类,从而消除任何中间工作。但是,JIBX 要求正在构建的对象的设置方法返回 void (http://jibx.sourceforge.net/details/binding-attributes.html)。 Protobuf 生成的 Builder 类遵循 builder 设计模式,并且不会从其 setter 方法返回 void。
有没有办法绕过这个问题并让 JIBX 直接将 XML 转换为 protobuf 类?也许我应该考虑使用另一种 XML 解析工具*?还是我必须写一些中间代码来方便 XML 和 protobuf 之间的转换?
*注意:我收到的输入 XML 非常大,我只需要其中的几个字段。这减少了我使用的一些较重的 XML 解析工具。
【问题讨论】:
-
必须是java吗? protobuf-net 类通常同时对 XmlSerializer 和 protobuf-net 非常满意
-
不幸的是,该项目必须在java中。我对使用哪些工具来完成工作有一定的灵活性,但仅此而已。
-
XSL 转换怎么样?如果您只需要提取一些字段并创建一个 protobuf 文件,则样式表可能很容易编写。
-
我最终对输入 xml 执行了 XSL 转换,并通过(小型)自定义 SAX 解析器提供输出以创建 protobuf。感谢您的帮助!
-
@Josh:您可以回答自己的问题并接受它。请分享!
标签: xml protocol-buffers jibx