using Azure;
using Domain.XML_Model;
using Domain;
using System.ComponentModel.DataAnnotations;
using System.Xml.Serialization;

namespace Domain.XML_Model
{
    // using System.Xml.Serialization;
    // XmlSerializer serializer = new XmlSerializer(typeof(Root));
    // using (StringReader reader = new StringReader(xml))
    // {
    //    var test = (Root)serializer.Deserialize(reader);
    // }

    [Serializable]
    //[XmlRoot(ElementName = "extensions")]
    public class Extension : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "accessoires")]
    public class Accessoire : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "modif_poids")]
        public string? ModifPoids { get; set; }

        [XmlAttribute(AttributeName = "prix")]
        public int Prix { get; set; }

        [XmlAttribute(AttributeName = "disponibilité")]
        public string? Disponibilité { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int AccessoireId { get; set; }
    }

    [Serializable]
    //[XmlRoot(ElementName = "améliorations")]
    public class Amélioration : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "catégorie")]
        public string? Catégorie { get; set; }

        [XmlAttribute(AttributeName = "souscatégorie")]
        public string? Souscatégorie { get; set; }

        [XmlAttribute(AttributeName = "promotion")]
        public int Promotion { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "cout")]
        public int Cout { get; set; }

        [XmlAttribute(AttributeName = "nb_max_ou_rang")]
        public int NbMaxOuRang { get; set; }

        [XmlAttribute(AttributeName = "condition")]
        public string? Condition { get; set; }
        [XmlIgnore] public int AméliorationId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "archétypes")]
    public class Archétype : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "caractéristiques")]
        public string? Caractéristiques { get; set; }

        [XmlAttribute(AttributeName = "mouvement")]
        public string? Mouvement { get; set; }

        [XmlAttribute(AttributeName = "blessures")]
        public int Blessures { get; set; }

        [XmlAttribute(AttributeName = "traits")]
        public string? Traits { get; set; }

        //[XmlAttribute(AttributeName = "traits")]
        //public string? TraitsAsText {
        //    get { return (Traits.HasValue) ? Traits.ToString() : null; }
        //    set { Traits = !string?.IsNullOrEmpty(value) ? int.Parse(value) : default(int?); }
        //}

        [XmlAttribute(AttributeName = "competences")]
        public string? Competences { get; set; }

        [XmlAttribute(AttributeName = "talents")]
        public string? Talents { get; set; }

        [XmlAttribute(AttributeName = "pouvoirs")]
        public string? Pouvoirs { get; set; }

        //[XmlAttribute(AttributeName = "pouvoirs")]
        //public string? PouvoirsAsText
        //{
        //    get { return (Pouvoirs.HasValue) ? Pouvoirs.ToString() : null; }
        //    set { Pouvoirs = !string?.IsNullOrEmpty(value) ? int.Parse(value) : default(int?); }
        //}

        [XmlAttribute(AttributeName = "armures")]
        public string? Armures { get; set; }

        [XmlAttribute(AttributeName = "armes")]
        public string? Armes { get; set; }

        [XmlAttribute(AttributeName = "equipement")]
        public string? Equipement { get; set; }

        [XmlAttribute(AttributeName = "menace")]
        public string? Menace { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int ArchétypeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "armes")]
    public class Arme : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "genre")]
        public string? Genre { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "groupe")]
        public string? Groupe { get; set; }

        [XmlAttribute(AttributeName = "portée")]
        public int Portée { get; set; }

        [XmlAttribute(AttributeName = "modes")]
        public string? Modes { get; set; }

        [XmlAttribute(AttributeName = "dégâts")]
        public string? Dégâts { get; set; }

        [XmlAttribute(AttributeName = "type_dégâts")]
        public string? TypeDégâts { get; set; }

        [XmlAttribute(AttributeName = "pénétration")]
        public int Pénétration { get; set; }

        [XmlAttribute(AttributeName = "autonomie")]
        public int Autonomie { get; set; }

        [XmlAttribute(AttributeName = "rechargement")]
        public int Rechargement { get; set; }

        [XmlAttribute(AttributeName = "attributs")]
        public string? Attributs { get; set; }

        [XmlAttribute(AttributeName = "accessoires")]
        public string? Accessoires { get; set; }

        [XmlAttribute(AttributeName = "poids")]
        public int Poids { get; set; }

        [XmlAttribute(AttributeName = "bonus_bf")]
        public int BonusBf { get; set; }

        [XmlAttribute(AttributeName = "prix")]
        public int Prix { get; set; }

        [XmlAttribute(AttributeName = "disponibilité")]
        public string? Disponibilité { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int ArmeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "armures")]
    public class Armure : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "pa_tête")]
        public int PaTête { get; set; }

        [XmlAttribute(AttributeName = "pa_bras")]
        public int PaBras { get; set; }

        [XmlAttribute(AttributeName = "pa_corps")]
        public int PaCorps { get; set; }

        [XmlAttribute(AttributeName = "pa_jambes")]
        public int PaJambes { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "poids")]
        public int Poids { get; set; }

        [XmlAttribute(AttributeName = "prix")]
        public int Prix { get; set; }

        [XmlAttribute(AttributeName = "qualité")]
        public string? Qualité { get; set; }

        [XmlAttribute(AttributeName = "disponibilité")]
        public string? Disponibilité { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int ArmureId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "assermentations")]
    public class Assermentation : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "seuil_min")]
        public int SeuilMin { get; set; }

        [XmlAttribute(AttributeName = "seuil_max")]
        public int SeuilMax { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int AssermentationId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "attributs_armes")]
    public class Attribut : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int AttributId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "carrières")]
    public class Carrière : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "types_mondes_autorisés")]
        public string? TypesMondesAutorisés { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int CarrièreId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "competences")]
    public class Competence : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "carac")]
        public string? Carac { get; set; }

        [XmlAttribute(AttributeName = "registre")]
        public string? Registre { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int CompetenceId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "coordonnées")]
    public class Coordonnée : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "sous_secteur")]
        public string? SousSecteur { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "coord_x")]
        public int CoordX { get; set; }

        [XmlAttribute(AttributeName = "coord_y")]
        public int CoordY { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int CoordonnéeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "cybernétiques")]
    public class Cybernétique : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "effet_qualité_médiocre")]
        public string? EffetQualitéMédiocre { get; set; }

        [XmlAttribute(AttributeName = "effet_qualité_moyenne")]
        public string? EffetQualitéMoyenne { get; set; }

        [XmlAttribute(AttributeName = "effet_qualité_bonne")]
        public string? EffetQualitéBonne { get; set; }

        [XmlAttribute(AttributeName = "effet_qualité_exceptionnelle")]
        public string? EffetQualitéExceptionnelle { get; set; }

        [XmlAttribute(AttributeName = "cout")]
        public int Cout { get; set; }

        [XmlAttribute(AttributeName = "disponibilité")]
        public string? Disponibilité { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int CybernétiqueId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "disciplines")]
    public class Discipline : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int DisciplineId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "divination")]
    public class Divination : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "seuil_min")]
        public int SeuilMin { get; set; }

        [XmlAttribute(AttributeName = "seuil_max")]
        public int SeuilMax { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int DivinationId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "equipements")]
    public class Equipement : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "poids")]
        public double Poids { get; set; }

        [XmlAttribute(AttributeName = "prix")]
        public int Prix { get; set; }

        [XmlAttribute(AttributeName = "disponibilité")]
        public string? Disponibilité { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public int Description { get; set; }
        [XmlIgnoreAttribute] public int EquipementId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "implants")]
    public class Implant : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int ImplantId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "mondes")]
    public class Monde : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "destin")]
        public string? Destin { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int MondeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "mutation")]
    public class Mutation : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type")]
        public string? Type { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "seuil_min")]
        public int SeuilMin { get; set; }

        [XmlAttribute(AttributeName = "seuil_max")]
        public int SeuilMax { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int MutationId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "pouvoir")]
    public class Pouvoir : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "discipline")]
        public string? Discipline { get; set; }

        [XmlAttribute(AttributeName = "seuil")]
        public int Seuil { get; set; }

        [XmlAttribute(AttributeName = "action")]
        public string? Action { get; set; }

        [XmlAttribute(AttributeName = "opposé")]
        public bool Opposé { get; set; }

        [XmlAttribute(AttributeName = "portée")]
        public string? Portée { get; set; }

        [XmlAttribute(AttributeName = "prolongeable")]
        public bool Prolongeable { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int PouvoirId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "promotion")]
    public class Promote : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "promotion")]
        public int Promotion { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "condition")]
        public string? Condition { get; set; }

        [XmlAttribute(AttributeName = "alternative")]
        public bool Alternative { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int PromotionId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "seuil")]
    public class Seuil : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "rang")]
        public int Rang { get; set; }

        [XmlAttribute(AttributeName = "valeur_min")]
        public int ValeurMin { get; set; }

        [XmlAttribute(AttributeName = "valeur_max")]
        public int ValeurMax { get; set; }
        [XmlIgnoreAttribute] public int SeuilId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "sousmonde")]
    public class Sousmonde : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type_monde")]
        public string? TypeMonde { get; set; }

        [XmlAttribute(AttributeName = "seuil_min")]
        public int SeuilMin { get; set; }

        [XmlAttribute(AttributeName = "seuil_max")]
        public int SeuilMax { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int SousmondeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "talent")]
    public class Talent : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "multiple")]
        public bool Multiple { get; set; }

        [XmlAttribute(AttributeName = "condition")]
        public string? Condition { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int TalentId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "trait")]
    public class Trait : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "multiple")]
        public bool Multiple { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int TraitId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "trouble")]
    public class Trouble : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "effet")]
        public string? Effet { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int TroubleId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "type_monde")]
    public class TypeMonde : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "texte_section")]
        public string? TexteSection { get; set; }

        [XmlAttribute(AttributeName = "age")]
        public string? Age { get; set; }

        [XmlAttribute(AttributeName = "cheveux")]
        public string? Cheveux { get; set; }

        [XmlAttribute(AttributeName = "corpulence")]
        public string? Corpulence { get; set; }

        [XmlAttribute(AttributeName = "particularités_physiques")]
        public string? ParticularitésPhysiques { get; set; }

        [XmlAttribute(AttributeName = "peau")]
        public string? Peau { get; set; }

        [XmlAttribute(AttributeName = "yeux")]
        public string? Yeux { get; set; }

        [XmlAttribute(AttributeName = "description")]
        public string? Description { get; set; }
        [XmlIgnoreAttribute] public int TypeMondeId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "type_nom")]
    public class TypeName : BaseEntity
    {

        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlAttribute(AttributeName = "nom")]
        public string? Nom { get; set; }

        [XmlAttribute(AttributeName = "type_nom")]
        public string? TypeNom { get; set; }

        [XmlAttribute(AttributeName = "genre")]
        public string? Genre { get; set; }

        [XmlAttribute(AttributeName = "seuil_min")]
        public int SeuilMin { get; set; }

        [XmlAttribute(AttributeName = "seuil_max")]
        public int SeuilMax { get; set; }
        [XmlIgnoreAttribute]
        public int TypeNomId { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName = "root")]
    public class Root : BaseEntity
    {
        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlArray(ElementName = "extensions")]
        [XmlArrayItem(ElementName = "extension")]
        public List<Extension> Extensions { get; set; }

        [XmlArray(ElementName = "accessoires_armes")]
        [XmlArrayItem(ElementName = "accessoire")]
        public List<Accessoire> AccessoiresArmes { get; set; }

        [XmlArray(ElementName = "améliorations")]
        [XmlArrayItem(ElementName = "amélioration")]
        public List<Amélioration> Améliorations { get; set; }

        [XmlArray(ElementName = "archétypes")]
        [XmlArrayItem(ElementName = "archétype")]
        public List<Archétype> Archétypes { get; set; }

        [XmlArray(ElementName = "armes")]
        [XmlArrayItem(ElementName = "arme")]
        public List<Arme> Armes { get; set; }

        [XmlArray(ElementName = "armures")]
        [XmlArrayItem(ElementName = "armure")]
        public List<Armure> Armures { get; set; }

        [XmlArray(ElementName = "assermentations")]
        [XmlArrayItem(ElementName = "assermentation")]
        public List<Assermentation> Assermentations { get; set; }

        [XmlArray(ElementName = "attributs_armes")]
        [XmlArrayItem(ElementName = "attribut")]
        public List<Attribut> AttributsArmes { get; set; }

        [XmlArray(ElementName = "carrières")]
        [XmlArrayItem(ElementName = "carrière")]
        public List<Carrière> Carrières { get; set; }

        [XmlArray(ElementName = "competences")]
        [XmlArrayItem(ElementName = "competence")]
        public List<Competence> Competences { get; set; }

        [XmlArray(ElementName = "coordonnées")]
        [XmlArrayItem(ElementName = "coordonnée")]
        public List<Coordonnée> Coordonnées { get; set; }

        [XmlArray(ElementName = "cybernétiques")]
        [XmlArrayItem(ElementName = "cybernétique")]
        public List<Cybernétique> Cybernétiques { get; set; }

        [XmlArray(ElementName = "disciplines")]
        [XmlArrayItem(ElementName = "discipline")]
        public List<Discipline> Disciplines { get; set; }

        [XmlArray(ElementName = "divinations")]
        [XmlArrayItem(ElementName = "divination")]
        public List<Divination> Divinations { get; set; }

        [XmlArray(ElementName = "equipements")]
        [XmlArrayItem(ElementName = "equipement")]
        public List<Equipement> Equipements { get; set; }

        [XmlArray(ElementName = "implants")]
        [XmlArrayItem(ElementName = "implant")]
        public List<Implant> Implants { get; set; }

        [XmlArray(ElementName = "mondes")]
        [XmlArrayItem(ElementName = "monde")]
        public List<Monde> Mondes { get; set; }

        [XmlArray(ElementName = "mutations")]
        [XmlArrayItem(ElementName = "mutation")]
        public List<Mutation> Mutations { get; set; }

        [XmlArray(ElementName = "pouvoirs")]
        [XmlArrayItem(ElementName = "pouvoir")]
        public List<Pouvoir> Pouvoirs { get; set; }

        [XmlArray(ElementName = "promotions")]
        [XmlArrayItem(ElementName = "promotion")]
        public List<Promote> Promotions { get; set; }

        [XmlArray(ElementName = "seuils_xp")]
        [XmlArrayItem(ElementName = "seuil")]
        public List<Seuil> SeuilsXp { get; set; }

        [XmlArray(ElementName = "sousmondes")]
        [XmlArrayItem(ElementName = "sousmonde")]
        public List<Sousmonde> Sousmondes { get; set; }

        [XmlArray(ElementName = "talents")]
        [XmlArrayItem(ElementName = "talent")]
        public List<Talent> Talents { get; set; }

        [XmlArray(ElementName = "traits")]
        [XmlArrayItem(ElementName = "trait")]
        public List<Trait> Traits { get; set; }

        [XmlArray(ElementName = "troubles")]
        [XmlArrayItem(ElementName = "trouble")]
        public List<Trouble> Troubles { get; set; }

        [XmlArray(ElementName = "type_mondes")]
        [XmlArrayItem(ElementName = "type_monde")]
        public List<TypeMonde> TypeMondes { get; set; }

        [XmlArray(ElementName = "types_nom")]
        [XmlArrayItem(ElementName = "type_nom")]
        public List<TypeName> TypesNom { get; set; }
    }


}
