[ Digester ] parse structure simple
Salut,
je cherche à parser une structure xml simple du style :
Code:
1 2 3 4 5 6 7 8
| <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<user_data>
<user>toto</user>
<player_id>1</player_id>
<team_id>372</team_id>
<last_login>0</last_login>
<fs_fan>0</fs_fan>
</user_data> |
Pour cela j'utilise Digester avec un fichier XML_FILE_DEF.xml (contenant la structure à mapper dans une classe Java) et DIGESTER_FILE_RULES.xml (decrivant les regles de mapping entre XML et JAVA).
J'ai créer un bean User avec les attributs suivants :
Code:
1 2 3 4 5
| private String user;
private String player_id;
private String team_id;
private String last_login;
private String fs_fan; |
Comme cela je respecte la structure XML.
voici mon DIGESTER_FILE_RULES.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <digester-rules>
<!-- -->
<!-- Creating User -->
<!-- -->
<object-create-rule pattern="user_data" classname="User" />
<call-method-rule pattern="user_data/user" methodname="setUser" paramcount="0" />
<call-method-rule pattern="user_data/player_id" methodname="setPlayer_id" paramcount="0" />
<call-method-rule pattern="user_data/team_id" methodname="setTeam_id" paramcount="0" />
<call-method-rule pattern="user_data/last_login" methodname="setLast_login" paramcount="0" />
<call-method-rule pattern="user_data/fs_fan" methodname="setFs_fan" paramcount="0" />
</pattern>
</digester-rules> |
Voici la methode qui est censée me renvoyer la réference de User :
Code:
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
| public Object getObject()
{
Object object = null;
Digester digester = null;
//MyErrorHandler eh = new MyErrorHandler();
try {
digester = DigesterLoader.createDigester(this.digesterFileRules.toURL());
//digester.setErrorHandler(eh);
object = digester.parse(this.xmlFileDef);
logger.info("mapping digester XML/JAVA ok");
}
catch (MalformedURLException e) {
logger.error("MalformedURLException", e);
}
catch (IOException e) {
logger.error("IOException", e);
}
catch (SAXException e) {
logger.error("SAXException", e);
}
return object;
} |
Aucune erreur n'est signalée, par contre la réference est null.
je crois que c'est mon fichier DIGESTER_FILE_RULES.xml qui est mal écrit.
J'ai remarqué que les tutorials charge des fichiers avec un premier objet qui contient un ensemble de d'objets dans des listes...
Dans mon cas je ne souhaite charger qu'un objet, est ce la raison cette reference null ????