Se connecter / S'enregistrer
Votre question

Transformer un XML en une List java

Tags :
  • Ascii
  • Programmation
Dernière réponse : dans Programmation
24 Avril 2009 10:30:55

Bonjour, mon but est de créer une liste contenant des objet panel ayant des attributs et une liste l'objet sur le panel. L'objet peut être un bouton, un texte, un graphique, bref n'importe quoi. Il peut y avoir au plus 10 éléments dans le panel.
Tout d'abord, pour que le logiciel soit éditable par n'importe qui, il va se construire en lisant un fichier XML. Le voici :

<?xml version="1.0" encoding="UTF-8"?>
<application>
<panel>
<panelId>1</panelId> <!--nom-->
<sizeH>200</sizeH>
<sizeV>320</sizeV>
<panelBackgroundR>11</panelBackgroundR>
<panelBackgroundG>75</panelBackgroundG>
<panelBackgroundB>200</panelBackgroundB><!--system RGB-->
<panelIcon>pictures/set.gif</panelIcon>
<text>
<textFont>"Serif"</textFont>
<textSize>10</textSize>
<textBoxHPos>63</textBoxHPos>
<textBoxVPos>52</textBoxVPos>
<textColorR>255</textColorR>
<textColorG>255</textColorG>
<textColorB>255</textColorB>
<textsentence>Tjay Tjiook</textsentence>
</text>
</panel>
</application>


Ensuite, j'ai une classe qui va lire le fichier XML pour créer les objets. J'en suis là. J'ai une erreur dans cette classe car je ne peux pas ajouter d'objet Panel à ma liste. Je n'arrive pas à corriger cette erreur.

public class XMLReader {

private org.jdom.Document document;
private Element root;
private Element current;
private List<Object> listElement = new ArrayList<Object>();
private SAXBuilder sbx;
public XMLReader () throws JDOMException {
this.sbx = new SAXBuilder();
try {
this.document = sbx.build(new File("configuration.xml"));
} catch (IOException ex) {
Logger.getLogger(XMLReader.class.getName()).log(Level.SEVERE, null, ex);
}

}

public List<Panel> getListPanel (String fille) {

List<Panel> listPanel = new ArrayList();//la liste des panel que l'on va retourner. Pour l'instant elle est vide !!!
Element mere = document.getRootElement();
listPanel = mere.getChildren(fille);//la liste contient tous les noeuds dont le nom est de type panel
Iterator itr = listPanel.iterator();//on créé un itérateur sur notre liste
while (itr.hasNext()) {
Element current = (Element) itr.next();//on recrée un élément courrant a chaque tour de boucle afin de pouvoir utiliser les methodes propores
//au éléments comme selectionner un noeud fils
Panel unPanel = new Panel();
listPanel.add(unPanel);
}
System.out.println(listPanel);
return listPanel;

}
}

Je vous passe aussi la classe Panel. Pour l'instant elle est toute simple, pas d'attribut ni rien, je les ajouterais par la suite.


public class Panel {


public Panel () {

}
}
Merci de votre aide

Autres pages sur : transformer xml list java

24 Avril 2009 13:48:42

J'ai trouvé l'erreur mais je ne comprends pas pourquoi ça la fait.
En fait lorsque j'ajoute à ma liste un objet Panel, le constructeur ne renvoie pas l'objet mais son adresse.
Lorsque je fais un System.out.println(new Panel()); j'ai en résultat Panel@15e3f.
Pourquoi j'ai ça ?
Je croyais que les adresses n'étaient pas gérées par java.
m
0
l
a b L Programmation
24 Avril 2009 19:49:40

Tout objet Java est référencé, donc ça crée toujours des pointeur, même si tu ne le vois pas.
Si Panel est une de tes classes, il te faut surcharger la méthode toString(), provenant de Object.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS