2009-08-14 3 views
0

Ich verwende Castor XML-Code-Generator. Wenn Sie zwei Schemas mit complex definiert haben, wie folgt:Wie kann ich das Standardverhalten von Castor umgehen, um Wrapper-Klassen für complexType-Elemente zu erstellen?

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

und

<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> 

nun aus dem zweiten Schema Castor das Feld _foo vom Typ Foo erzeugt, die eine Unterklasse der FooBar Klasse.

Warum kann ein Name nicht nur ein Name sein? Ich verstehe, dass es darum geht, Kollisionen zu vermeiden, aber ich möchte ein Feld _foo vom Typ FooBar in meiner generierten Klasse haben. Irgendwelche Ideen?

Antwort

0

Es sieht so aus, als ob die Antwort von der Version von Castor abhängt, die verwendet wird. In neueren Versionen scheint es Sie

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

zum binding.xml Datei hinzufügen können, und es wird FooBar als Klasse. Dies scheint jedoch in Version 1.05 nicht zu funktionieren, was ich verwende. Da ich das oben in neueren Versionen nicht getestet habe, kann ich nicht garantieren, dass es funktioniert/richtig ist.