1

我有几个使用 JibX 提供的 CodeGen 工具创建的文件。这些类都具有相同的根名称,因此生成的类都具有相同的名称。

我最初通过将所有这些生成的类放入它们自己的包中来解决命名冲突来解决这个问题。然后我遇到了需要声明整个包名的问题,这很长,每次我想声明或强制转换一个新对象时。

我处理这个问题的最初想法是创建一个具有不同名称的空子类,以扩展原始自动生成的类。如

public class AutoGen
{
     //This class generated by CodeGen binds as expected
     //No problems marshalling or unmarshalling documents
}


public class UniqueName extends com.CompanyName.ProductName.SDK.Events.HeartBeatEvent.AutoGen
{
     //This class is empty
}

我现在遇到的问题是,由于缺少绑定,JibX 不会将字符串或文件编组或解组到该子类。

再次阅读 CodeGen 文档后,我似乎找不到一个命令可以让我声明生成的类名应该是什么。有没有办法有效地使 CodeGen 生成的类具有用户声明的唯一名称?如果没有,有没有办法让 JibX 正确编组和解组子类?这些解决方案中的任何一个都可以工作。

同样重要的是,我提到我无法更改生成代码的 xsd 文件。

4

2 回答 2

0

查看此页面上记录的 JiBX 名称转换器扩展:

http://jibx.sourceforge.net/fromschema/codegen-extends.html

如果您不能使用默认实现中可用的选项,您可以编写自己的名称转换器。

您可能必须编写一个自定义转换器。这应该很简单。

您将在此处找到 JiBX 源代码:

https://github.com/jibx/core

祝你好运!

Don Corley
JiBX 贡献者

于 2013-06-13T16:03:22.637 回答
0

您可以选择使生成的类独一无二,将它们放入您想要的任何包结构中,然后编辑绑定。

由于您无法更改 XSD,并且我假设您不想手动编写相应的类,因此此选项可能最适合您。

要直接回答您的问题,我知道无法指定生成的类的名称。相反,您应该自己唯一地命名类,然后编辑绑定配置,使其与新名称和包结构相对应。

于 2013-06-12T19:49:32.857 回答