如何解决Castor的默认行为以创建complexType元素的包装类?

时间:2009-08-14 03:07:11

标签: java xsd castor

我正在使用Castor XML代码生成器。如果您有两个模式,其complexTypes定义如下:

<xs:schema ...blah...>
  <xs:complexType name="FooBarType">
    <xs:sequence>
      <xs:element name="meh"/>
      ...etc...
    </xs:sequence>
  </xs:complexType>
  <xs:element name="FooBar"/>
</xs:schema>

<xs:schema ...blah ...>
  <xs:include schemaLocation="FooBar.xsd">
  <xs:complexType name="AnotherSchemaType">
    <xs:sequence>
      <xs:element name="foo" type="FooBarType"/>
      ...etc...
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AnotherSchema"/>
</xs:schema>

现在,从第二个模式开始,Castor生成Foo类型的字段_foo,它是FooBar类的子类。

为什么姓名不能成为名字?我理解这是为了避免命名冲突,但我想在我生成的类中使用FooBar类型的字段_foo。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看起来答案取决于正在使用的Castor版本。在较新的版本中,您似乎可以添加

<elementBinding name="/complexType:AnotherSchemaType/foo">
  <java-class name="FooBar"/>
</elementBinding>

到binding.xml文件,它将使用FooBar作为类。这似乎不适用于版本1.05,这是我正在使用的。由于我没有在新版本中测试上述内容,因此无法保证它能正常工作。