'Why does my XSD generated class hold attributes in List of Objects

I am trying to generate java classes from xsd. my xsd file is the following.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Designations" type="DesignationsType"/>
  <xs:complexType name="NameType">
    <xs:sequence>
      <xs:element type="xs:string" name="Name1" minOccurs="0"/>
      <xs:element type="xs:string" name="Name2" minOccurs="0"/>
      <xs:element type="xs:string" name="Name3" minOccurs="0"/>
      <xs:element type="xs:string" name="Name4" minOccurs="0"/>
      <xs:element type="xs:string" name="Name5" minOccurs="0"/>
      <xs:element type="xs:string" name="Name6" minOccurs="0"/>
      <xs:element name="NameType">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Primary Name"/>
            <xs:enumeration value="Alias"/>
            <xs:enumeration value="Primary Name Variation"/>
            <xs:enumeration value="Primary name"/>
            <xs:enumeration value="ALias"/>
            <xs:enumeration value="Primary name variation"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AliasStrength" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Good quality a.k.a"/>
            <xs:enumeration value="Low quality a.k.a"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NamesType">
    <xs:sequence>
      <xs:element type="NameType" name="Name" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NonLatinNameType">
    <xs:sequence>
      <xs:element type="xs:string" name="NameNonLatinScript"/>
      <xs:element type="xs:string" name="NonLatinScriptType" minOccurs="0"/>
      <xs:element type="xs:string" name="NonLatinScriptLanguage" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NonLatinNamesType">
    <xs:sequence>
      <xs:element type="NonLatinNameType" name="NonLatinName" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SanctionsImposedIndicatorsType">
    <xs:sequence>
      <xs:element name="AssetFreeze">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="true"/>
            <xs:enumeration value="false"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ArmsEmbargo">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="TargetedArmsEmbargo">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CharteringOfShips">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ClosureOfRepresentativeOffices">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CrewServicingOfShipsAndAircraft">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Deflag">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PreventionOfBusinessArrangements">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ProhibitionOfPortEntry">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="TravelBan">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element type="xs:string" name="PreventionOfCharteringOfShips"/>
      <xs:element type="xs:string" name="PreventionOfCharteringOfShipsAndAircraft"/>
      <xs:element name="TechnicalAssistanceRelatedToAircraft">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="false"/>
            <xs:enumeration value="true"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AddressType">
    <xs:sequence>
      <xs:element type="xs:string" name="AddressLine1" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressLine2" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressLine3" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressLine4" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressLine5" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressLine6" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressPostalCode" minOccurs="0"/>
      <xs:element type="xs:string" name="AddressCountry" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AddressesType">
    <xs:sequence>
      <xs:element type="AddressType" name="Address" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PhoneNumbersType">
    <xs:sequence>
      <xs:element type="xs:string" name="PhoneNumber" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EmailAddressesType">
    <xs:sequence>
      <xs:element type="xs:string" name="EmailAddress" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DesignationType">
    <xs:sequence>
      <xs:element type="xs:string" name="LastUpdated"/>
      <xs:element type="xs:string" name="DateDesignated" minOccurs="0"/>
      <xs:element type="xs:string" name="UniqueID"/>
      <xs:element type="xs:string" name="OFSIGroupID" minOccurs="0"/>
      <xs:element type="xs:string" name="UNReferenceNumber" minOccurs="0"/>
      <xs:element type="NamesType" name="Names"/>
      <xs:element type="NonLatinNamesType" name="NonLatinNames" minOccurs="0"/>
      <xs:element type="TitlesType" name="Titles" minOccurs="0"/>
      <xs:element type="xs:string" name="RegimeName"/>
      <xs:element name="IndividualEntityShip">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Entity"/>
            <xs:enumeration value="Individual"/>
            <xs:enumeration value="Ship"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DesignationSource">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="UN"/>
            <xs:enumeration value="UK"/>
            <xs:enumeration value="UK|UN"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element type="xs:string" name="SanctionsImposed" minOccurs="0"/>
      <xs:element type="SanctionsImposedIndicatorsType" name="SanctionsImposedIndicators"/>
      <xs:element type="xs:string" name="OtherInformation" minOccurs="0"/>
      <xs:element type="xs:string" name="UKStatementofReasons" minOccurs="0"/>
      <xs:element type="AddressesType" name="Addresses" minOccurs="0"/>
      <xs:element type="PhoneNumbersType" name="PhoneNumbers" minOccurs="0"/>
      <xs:element type="WebsitesType" name="Websites" minOccurs="0"/>
      <xs:element type="EmailAddressesType" name="EmailAddresses" minOccurs="0"/>
      <xs:element type="IndividualDetailsType" name="IndividualDetails" minOccurs="0"/>
      <xs:element type="EntityDetailsType" name="EntityDetails" minOccurs="0"/>
      <xs:element type="ShipDetailsType" name="ShipDetails" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TitlesType">
    <xs:sequence>
      <xs:element type="xs:string" name="Title" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DOBsType">
    <xs:sequence>
      <xs:element type="xs:string" name="DOB" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NationalitiesType">
    <xs:sequence>
      <xs:element type="xs:string" name="Nationality" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PositionsType">
    <xs:sequence>
      <xs:element type="xs:string" name="Position" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LocationType">
    <xs:sequence>
      <xs:element type="xs:string" name="TownOfBirth" minOccurs="0"/>
      <xs:element type="xs:string" name="CountryOfBirth" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="BirthDetailsType">
    <xs:sequence>
      <xs:element type="LocationType" name="Location" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IndividualType">
    <xs:sequence>
      <xs:element type="DOBsType" name="DOBs" minOccurs="0"/>
      <xs:element type="PassportDetailsType" name="PassportDetails" minOccurs="0"/>
      <xs:element type="NationalitiesType" name="Nationalities" minOccurs="0"/>
      <xs:element type="NationalIdentifierDetailsType" name="NationalIdentifierDetails" minOccurs="0"/>
      <xs:element type="PositionsType" name="Positions" minOccurs="0"/>
      <xs:element type="GendersType" name="Genders" minOccurs="0"/>
      <xs:element type="BirthDetailsType" name="BirthDetails" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IndividualDetailsType">
    <xs:sequence>
      <xs:element type="IndividualType" name="Individual"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NationalIdentifierType">
    <xs:sequence>
      <xs:element type="xs:string" name="NationalIdentifierNumber" minOccurs="0"/>
      <xs:element type="xs:string" name="NationalIdentifierAdditionalInformation" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NationalIdentifierDetailsType">
    <xs:sequence>
      <xs:element type="NationalIdentifierType" name="NationalIdentifier" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PassportType">
    <xs:sequence>
      <xs:element type="xs:string" name="PassportNumber" minOccurs="0"/>
      <xs:element type="xs:string" name="PassportAdditionalInformation" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PassportDetailsType">
    <xs:sequence>
      <xs:element type="PassportType" name="Passport" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="GendersType">
    <xs:sequence>
      <xs:element name="Gender">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Male"/>
            <xs:enumeration value="Female"/>
            <xs:enumeration value="male"/>
            <xs:enumeration value="female"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TypeOfEntitiesType">
    <xs:sequence>
      <xs:element type="xs:string" name="TypeOfEntity" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EntityType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="TypeOfEntitiesType" name="TypeOfEntities"/>
      <xs:element type="ParentCompaniesType" name="ParentCompanies"/>
      <xs:element type="BusinessRegistrationNumbersType" name="BusinessRegistrationNumbers"/>
      <xs:element type="SubsidiariesType" name="Subsidiaries"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="EntityDetailsType">
    <xs:sequence>
      <xs:element type="EntityType" name="Entity"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WebsitesType">
    <xs:sequence>
      <xs:element type="xs:string" name="Website" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ParentCompaniesType">
    <xs:sequence>
      <xs:element type="xs:string" name="ParentCompany" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="BusinessRegistrationNumbersType">
    <xs:sequence>
      <xs:element type="xs:string" name="BusinessRegistrationNumber" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SubsidiariesType">
    <xs:sequence>
      <xs:element type="xs:string" name="Subsidiary" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMONumbersType">
    <xs:sequence>
      <xs:element type="xs:string" name="IMONumber"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CurrentOwnerOperatorsType">
    <xs:sequence>
      <xs:element type="xs:string" name="CurrentOwnerOperator"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CurrentBelievedFlagOfShipsType">
    <xs:sequence>
      <xs:element name="CurrentBelievedFlagOfShip">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Comoros"/>
            <xs:enumeration value="St Kitts and Nevis"/>
            <xs:enumeration value="North Korea"/>
            <xs:enumeration value="Cambodia"/>
            <xs:enumeration value="Palau"/>
            <xs:enumeration value="Belize"/>
            <xs:enumeration value="Togo"/>
            <xs:enumeration value="Panama"/>
            <xs:enumeration value="Dominica"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PreviousFlagsType">
    <xs:sequence>
      <xs:element type="xs:string" name="PreviousFlag" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TypeOfShipDetailsType">
    <xs:sequence>
      <xs:element name="TypeOfShip" maxOccurs="unbounded" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Bulk Carrier"/>
            <xs:enumeration value="General Cargo / Multi Purpose"/>
            <xs:enumeration value="Oil Tanker"/>
            <xs:enumeration value="Chemical Carrier"/>
            <xs:enumeration value="Oil tanker"/>
            <xs:enumeration value="Other"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TonnageOfShipDetailsType">
    <xs:sequence>
      <xs:element type="xs:string" name="TonnageOfShip"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LengthOfShipDetailsType">
    <xs:sequence>
      <xs:element type="xs:string" name="LengthOfShip"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="YearsBuiltType">
    <xs:sequence>
      <xs:element type="xs:string" name="YearBuilt"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ShipType">
    <xs:sequence>
      <xs:element type="IMONumbersType" name="IMONumbers"/>
      <xs:element type="CurrentOwnerOperatorsType" name="CurrentOwnerOperators" minOccurs="0"/>
      <xs:element type="CurrentBelievedFlagOfShipsType" name="CurrentBelievedFlagOfShips" minOccurs="0"/>
      <xs:element type="PreviousFlagsType" name="PreviousFlags" minOccurs="0"/>
      <xs:element type="TypeOfShipDetailsType" name="TypeOfShipDetails" minOccurs="0"/>
      <xs:element type="TonnageOfShipDetailsType" name="TonnageOfShipDetails" minOccurs="0"/>
      <xs:element type="LengthOfShipDetailsType" name="LengthOfShipDetails" minOccurs="0"/>
      <xs:element type="YearsBuiltType" name="YearsBuilt" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ShipDetailsType">
    <xs:sequence>
      <xs:element type="ShipType" name="Ship"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DesignationsType">
    <xs:sequence>
      <xs:element type="xs:string" name="DateGenerated"/>
      <xs:element type="DesignationType" name="Designation" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

the problem is when I generate the java classes EntityType Class generated as following.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EntityType", propOrder = {
    "typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers"
})
public class EntityType {

    @XmlElements({
        @XmlElement(name = "TypeOfEntities", type = TypeOfEntitiesType.class),
        @XmlElement(name = "ParentCompanies", type = ParentCompaniesType.class),
        @XmlElement(name = "BusinessRegistrationNumbers", type = BusinessRegistrationNumbersType.class),
        @XmlElement(name = "Subsidiaries", type = SubsidiariesType.class)
    })
    protected List<Object> typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers;

     typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers property.

    public List<Object> getTypeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers() {
        if (typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers == null) {
            typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers = new ArrayList<Object>();
        }
        return this.typeOfEntitiesOrParentCompaniesOrBusinessRegistrationNumbers;
    }

}

And I cant read the attributes. Why does it generated as List<Object> with or's instead of for example TypeOfEntitys typeOfEntity;

just like other classes. That are generated.

and here is the link of xml that I am generating my xsd.

https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/1061027/UK_Sanctions_List.xml



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source