JAXB生成了可怕的奇怪和长方法名称

时间:2013-07-12 15:06:39

标签: xml jaxb

在我的xsd架构中,我有一个complexType"表达式"它有27个元素,所有这些元素都扩展了一个常见的complexType" StepElement"。以下是表达式complexType的示例。(为简单起见,我只显示其中的8个。)

 <xs:complexType name="expression">
            <xs:sequence maxOccurs="unbounded">
                <xs:element name="STEP_ANIMATION" type="Animation_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_EXPECT_REPLY" type="Expect_Reply_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_RESTART" type="Restart_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_REDIRECT" type="Redirect_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_SUBGOAL" type="Subgoal_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_TIMER" type="Timer_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_SITUATION" type="Situation_Attributes" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="STEP_SOUND" type="Sound_Attributes" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        <xs:attribute name="ID" type="xs:integer"/>
        <xs:attribute name="SUCCESS_EVT" type="xs:string"/>
        <xs:attribute name="DELAY" type="xs:float"/>
    </xs:complexType>

其中每个元素类型都是这样的(它们都扩展了StepElement但具有不同的属性)

<xs:complexType name="Animation_Attributes">
        <xs:complexContent>
            <xs:extension base="StepElement">
                <xs:attribute name="AGENT" type="xs:string" default="$CURRENTBOT"/>
                <xs:attribute name="SUCCESS_EVT" type="xs:string"/>
                <xs:attribute name="FAIL_EVT" type="xs:string"/>
                </xs:extension>
        </xs:complexContent>
</xs:complexType>

以下是StepElement的样子

<xs:complexType name="StepElement">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="ID" type="xs:integer"/>
                <xs:attribute name="ENGLISH" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>

现在我遇到的问题是,当我解析这个模式时,JAXB在Expression类中生成的getter方法就是这个

 public List<StepElement> getSTEPANIMATIONAndSTEPEXPECTREPLYAndSTEPRESTART()

我在架构结构中做错了导致这种情况发生吗?或者是否有调整方法名称的解决方案?

1 个答案:

答案 0 :(得分:1)

您可以使用JAXB绑定文件来自定义生成的方法名称。这是Oracle documentation on it