Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB问题:nameXmlTransform typeName前缀不起作用_Java_Jaxb_Xsd - Fatal编程技术网

Java JAXB问题:nameXmlTransform typeName前缀不起作用

Java JAXB问题:nameXmlTransform typeName前缀不起作用,java,jaxb,xsd,Java,Jaxb,Xsd,我希望将几个模式转换为Java代码。模式都是相似的;例如,每一个都有一个TXLife根对象。如果每个模式生成的代码具有唯一的类名,那么管理代码就更容易了。我可以使用“包”绑定将每个模式中的代码放入自己的包中,但当我尝试使用“前缀”绑定更改类名时,它会忽略它 以下是我的schema_bindings.xml文件: 当我运行xjc命令时,我得到(我必须修改xjc.bat文件中的类路径才能使它工作): C:\test>\progs\Java\jaxb-ri-2.2.7\bin\xjc.bat-exte

我希望将几个模式转换为Java代码。模式都是相似的;例如,每一个都有一个TXLife根对象。如果每个模式生成的代码具有唯一的类名,那么管理代码就更容易了。我可以使用“包”绑定将每个模式中的代码放入自己的包中,但当我尝试使用“前缀”绑定更改类名时,它会忽略它

以下是我的schema_bindings.xml文件:

当我运行xjc命令时,我得到(我必须修改xjc.bat文件中的类路径才能使它工作):

C:\test>\progs\Java\jaxb-ri-2.2.7\bin\xjc.bat-extension-dsrc-bschema\u bindings.xml模式

parsing a schema... compiling a schema... com\mycompany\hi\Holding.java com\mycompany\hi\InquiryLevel.java com\mycompany\hi\KeyedValue.java com\mycompany\hi\OLifE.java com\mycompany\hi\ObjectFactory.java com\mycompany\hi\Policy.java com\mycompany\hi\TXLife.java com\mycompany\hi\TXLifeRequest.java com\mycompany\hi\TransMode.java com\mycompany\hi\TransSubType.java com\mycompany\hi\TransType.java 正在分析架构。。。 正在编译架构。。。 com\mycompany\hi\Holding.java com\mycompany\hi\InquiryLevel.java com\mycompany\hi\KeyedValue.java com\mycompany\hi\OLifE.java com\mycompany\hi\ObjectFactory.java com\mycompany\hi\Policy.java com\mycompany\hi\TXLife.java com\mycompany\hi\TXLifeRequest.java com\mycompany\hi\TransMode.java com\mycompany\hi\TransSubType.java com\mycompany\hi\TransType.java 我所希望的是,每个java文件(以及其中的类)都将被命名为“Hi_”。Jaxb似乎完全忽略了我的“前缀”规范。 我尝试了绑定文件的几种变体。我还使用Ant xjc任务尝试了相同的绑定,结果都是一样的

我可以处理这些结果,但这意味着处理来自一个模式的输入并生成到另一个模式的输出的代码必须使用完全限定的类名来引用对象,这很尴尬。

TL;博士
对应于从命名复杂类型生成的类。您可以通过添加
来执行以下操作,以影响从全局元素生成的类:



完整示例 下面是一个完整的例子

schema.xsd

下面的架构有一个全局元素和一个命名的复杂类型


binding.xml

xjc -b binding.xml schema.xsd

XJC呼叫

xjc -b binding.xml schema.xsd
输出

我们看到,与全局元素对应的类前缀为
元素
,与命名复杂类型对应的类前缀为
类型
ObjectFactory
package info
不是域模型的一部分,JAXB利用它们来获取元数据,因此它们的名称不受影响

parsing a schema...
compiling a schema...
com/mycompany/hi/Element_GlobalElement.java
com/mycompany/hi/ObjectFactory.java
com/mycompany/hi/Type_NamedComplexType.java
com/mycompany/hi/package-info.java

看来你在装订方面有很多知识。你能帮我解决这个问题吗?我已经用了两天了。1.2.