Java xsd到jaxb添加了特殊字符

Java xsd到jaxb添加了特殊字符,java,eclipse,maven,jaxb,xsd,Java,Eclipse,Maven,Jaxb,Xsd,我有如下所示的xsd文件: <xs:complexType name="sampleTest"> <xs:sequence> <xs:element name="testName" type="xs:string"/> <xs:element name="actualData" type="tns:actualData"/> <xs:element nam

我有如下所示的xsd文件:

<xs:complexType name="sampleTest">
        <xs:sequence>
            <xs:element name="testName" type="xs:string"/>
            <xs:element name="actualData" type="tns:actualData"/>
            <xs:element name="expectedDataAPI" type="xs:string"/>
            <xs:element name="actualDataPostStatus" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

通过使用JAXBXJC插件,它可以生成适当的bean类。但是,如果我将minOccurance和maxOccurance添加到元素中,它会添加一个特殊字符

<xs:element name="actualData" type="tns:actualData" minOccurs="1" maxOccurs="unbounded"/>

i、 它产生了什么

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "sampleTest", propOrder = {
        "testName",
        "actualDatas",
        "expectedDataAPI",
        "actualDataPostStatus"
    })

    ....
    ...
        @XmlElement(name = "actualData", required = true)
        protected List<ActualData> actualDatas;
...
...
public List<ActualData> getActualDatas() {
        if (actualDatas == null) {
            actualDatas = new ArrayList<ActualData>();
        }
        return this.actualDatas;
    }
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“sampleTest”,比例器={
“测试名称”,
“实际数据”,
“expectedDataAPI”,
“实际数据状态”
})
....
...
@xmlement(name=“actualData”,必需=true)
受保护的列表实际数据;
...
...
公共列表getActualDatas(){
如果(实际数据==null){
actualDatas=新的ArrayList();
}
返回此.actualdata;
}
它不再是actualData,而是actualData。是否需要任何过滤器?我需要使用哪些更改来避免特殊角色

<xs:element name="actualData" type="tns:actualData" minOccurs="1" maxOccurs="unbounded"/>
我正在使用Maven在eclipse中使用xjc插件生成jaxb。我正在使用Java1.6和JAXB2.2.7

更新

本人有以下约束力:

<jaxb:bindings version="2.0" 
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        jaxb:extensionBindingPrefixes="xjc">

    <jaxb:globalBindings  xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <jaxb:serializable uid="1"/>
        <xjc:simple />
    </jaxb:globalBindings>

</jaxb:bindings>

您必须包含导致此行为的扩展(可能是意外)。我的猜测是xjc:simple,这将导致为重复的元素生成复数名称


标准JAXB行为 下面是一个显示标准JAXB行为的示例

XMLSchema(Schema.xsd)


XJC呼叫

xjc schema.xsd
xjc -extension -b binding.xml schema.xsd
生成的类(样本测试)

生成的字段和属性是单数的
actualData

package org.example.schema;

import java.util.*;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "sampleTest", propOrder = {"actualData"})
public class SampleTest {

    @XmlElement(required = true)
    protected List<ActualData> actualData;

    public List<ActualData> getActualData() {
        if (actualData == null) {
            actualData = new ArrayList<ActualData>();
        }
        return this.actualData;
    }

}
生成的类(样本测试)

生成的字段和属性不是单一的
actualdata

package org.example.schema;

import java.io.Serializable;
import java.util.*;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "sampleTest", propOrder = {"actualDatas"})
public class SampleTest
    implements Serializable
{

    private final static long serialVersionUID = 1L;
    @XmlElement(name = "actualData", required = true)
    protected List<ActualData> actualDatas;

    public List<ActualData> getActualDatas() {
        if (actualDatas == null) {
            actualDatas = new ArrayList<ActualData>();
        }
        return this.actualDatas;
    }

}
package org.example.schema;
导入java.io.Serializable;
导入java.util.*;
导入javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name=“sampleTest”,proporter={“actualdata”})
公共类抽样测试
实现序列化接口
{
私有最终静态长serialVersionUID=1L;
@xmlement(name=“actualData”,必需=true)
受保护的列表实际数据;
公共列表getActualDatas(){
如果(实际数据==null){
actualDatas=新的ArrayList();
}
返回此.actualdata;
}
}

我在更新中添加了如上所示的绑定,但它不起作用。@akb-这是您以前使用的绑定或您现在尝试使用的绑定?我以前使用的这个绑定,即它是一个现有文件。@akb-从绑定中删除
xjc:simple
,应该可以解决属性名问题。非常好,我已经评论了整个绑定标签,也就是说,它现在可以正常工作了。谢谢。你能告诉我为什么绑定会产生问题吗?。