IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'�change (XML, JSON...) Java Discussion :

Conversion xml en objet, erreur "No such field"


Sujet :

Format d'�change (XML, JSON...) Java

  1. #1
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 4
    Par d�faut Conversion xml en objet, erreur "No such field"
    Bonjour,

    Je cherche � faire un syst�me d'IA pour un jeu. Ce dernier marche tr�s bien mais je cherche � �diter mes diff�rentes strat�gies de fa�ons simple. J'ai donc choisi de cr�er un fichier xml contenant (pour commencer) une strat�gie.

    Strat�gie est la classe m�re. Les classes actions et condition h�ritent de cette derni�re. Il y a d'autres classes plus sp�cifique qui h�ritent sois d'Action, soient de Condition (respectivement, comme Avancer et PeutAvancer).

    J'ai fais des recherches et Xstream m'a l'air d'�tre tr�s bien pour faire ce que je veux faire : parser le fichier xml est cr�er des strat�gies en fonction de.

    Voici un exemple de mon fichier xml :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="UTF-8"?>
    <AssezEnergie>
    	<seuil>25</seuil>
    	<PeutAvancer>
    		<Avancer></Avancer>
    		<RotationDroite></RotationDroite>
    	</PeutAvancer>
    	<NeRienFaire></NeRienFaire>
    </AssezEnergie>
    Ma classe XmlParser :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    package modele;
     
    import java.io.FileReader;
    import java.util.concurrent.locks.Condition;
    import java.io.FileNotFoundException;
    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.xml.DomDriver;
     
    import strategie.Strategie;
    import strategie.action.Avancer;
    import strategie.action.NeRienFaire;
    import strategie.action.RotationDroite;
    import strategie.condition.AssezEnergie;
    import strategie.condition.PeutAvancer;
     
    public class XmlParser {
     
      public static void main(String[] args) throws FileNotFoundException {
     
       	FileReader reader = new FileReader("C:/Users/tomhoo/Documents/S5/genie_logiciel/projet/ambroise-gouedard-jeanbaptiste-perais/xml/simple.xml");  
    	XStream xstream = new XStream();   
     
    	xstream.alias("Strategie", Strategie.class);
    	xstream.alias("AssezEnergie", AssezEnergie.class);
    	xstream.alias("PeutAvancer", PeutAvancer.class);
    	xstream.alias("Avancer", Avancer.class);
    	xstream.alias("RotationDroite", RotationDroite.class);
    	xstream.alias("NeRienFaire", NeRienFaire.class);
     
     
    	Strategie test = (Strategie) xstream.fromXML(reader);
     
     
      }
     
    }
    A l�ex�cution j'ai l'erreur suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field strategie.condition.AssezEnergie.PeutAvancer
    ---- Debugging information ----
    field               : PeutAvancer
    class               : strategie.condition.AssezEnergie
    required-type       : strategie.condition.AssezEnergie
    converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
    path                : /AssezEnergie/PeutAvancer
    line number         : 4
    version             : 1.4.8
    -------------------------------
    	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:501)
    	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:357)
    	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
    	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
    	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
    	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
    	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
    	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
    	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
    	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1206)
    	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1190)
    	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1061)
    	at modele.XmlParser.main(XmlParser.java:31)
    Quelqu'un saurait-il ce qui cloche ?

  2. #2
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 4
    Par d�faut
    Voici le constructeur de PeutAvancer : (Strategie vrai, Strategie faux) et celui de AssezEnergie(int seuil, Strategie vrai, Strategie faux)

    Comment faire comprendre � Xstream que PeutAvancer est la Strategie vrai de AssezEnergie ?
    Pensez-vous que Xstream est le plus adapt� pour �a ?

  3. #3
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par d�faut
    Je peux supposer les classes du domaine se compilent bien, sans erreurs. Et puis, je peux visuelizer que la classes AssezEnergie s'�crit un peu comme �a.
    Code java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package strategie.condition;
    // etc
    import strategie.Strategie;
    import strategie.action.NeRienFaire;
    //etc
    public class AssezEnergie extends Strategie {
        //etc...
        PeutAvancer peutAvancer;
        NeRienFaire neRienFaire;
        //etc...
        //le constructeur, les getters et setters...
        //etc...
    }
    Avec ceci sous-entendu, il vous faut rajouter encore quelques mappings pour qu'il fonctionne. Voici ce qu'il faut rajouter avant la ligne de constructeur d'AssezEnergie.
    Code java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    	//...etc
    	xstream.alias("NeRienFaire", NeRienFaire.class);
     
    	xstream.aliasField("PeutAvancer", AssezEnergie.class, "peutAvancer");
    	xstream.aliasField("NeRienFaire", AssezEnergie.class, "neRienFaire");
     
    	Strategie test = (Strategie) xstream.fromXML(reader);
    Comme �a, l'erreur soulev�e devrait r�solue. Mais �ventuellement, vous devrez faire le m�me pour Avancer et RotationDroite ... pour que les erreurs r�appara�tre plus tard pour la m�me raison.
    Code java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	xstream.aliasField("Avancer", PeutAvancer.class, "avancer");
    	xstream.aliasField("RotationDroite", PeutAvancer.class, "rotationDroite");
    Voil� !

Discussions similaires

  1. R�ponses: 2
    Dernier message: 15/04/2015, 09h59
  2. R�ponses: 6
    Dernier message: 21/07/2006, 09h18
  3. un probl�me avec un tableau d'objet, erreur bete ?
    Par Heero_2040 dans le forum C++
    R�ponses: 12
    Dernier message: 13/07/2006, 13h20
  4. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 25/01/2006, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo