Messages
du sujet
construction XMl et correspondance objet Java |
botbot
Ville : Lyon
Membre depuis : 22 janv. 2010
Messages : 15
|
22 janv. 2010 à 14:57
Bonjour (re...)
Je souhaite faire une application qui est alimentée par XML. Le XML me sert en fait de base de données.
L'xml comporte des ensembles du type
<As>
<A xa="" ya=""/>
<A xa="" ya=""/>
</As>
Cette structure est très bien gérée par l'exemple qui figure page 307( mon précédent post :))
Mais dans mon xml il y a des structures plus compliquées du type
<Bs>
<B>
<C xc="" yc="">
<D xd="" yd="">
<D xd="" yd="">
<E xe="" ye="">
</B>
<B>
<C xc="" yc="">
<E xe="" ye="">
</B>
</Bs>
Alors je me pose quelques questions
Ne faut il pas mieux garder la structure simple et mettre tous les éléments en attributs?
Si je garde la structure complexe, suis-je obliger de faire x hashset pour les x elements (un hashset ne peut-il pas contenir d'autre hashset?)
...
Bref comment concevoir mes objets java à partir de mon xml?
Merci pour votre expertise.
|
Manu
Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
|
22 janv. 2010 à 18:10
Il vaut mieux une structure XML qui reflète l'organisation de vos objets, c'est plus homogène et donc plus simple à maintenir.
Si vous avez un ensemble de sous-ensembles d'objets, rien ne vous empêche de programmer cela avec un hashset contenant d'autre hashset et d'utiliser la structure XML que vous avez décrite.
Il suffit de créer les objets à partir des éléments lus avec l'analyseur DOM en modifiant l'exemple des pages 304-305. --- Manu (moderator/modérateur)
|
botbot
Ville : Lyon
Membre depuis : 22 janv. 2010
Messages : 15
|
22 janv. 2010 à 19:01
OK.
Je vais voir cette gestion ce week end.
Merci.
|
botbot
Ville : Lyon
Membre depuis : 22 janv. 2010
Messages : 15
|
23 janv. 2010 à 12:13
Bonjour.
Après une recherche sur le net je ne trouve pas d'explication à mon résultat.
J'explique :
j'ai fais un test pour parcourir les éléments enfants d'une balise de mon xml.
Pour info j'ai 3 balises qui comporte chacune 2 enfants.
ça donne ça
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//factory d'analyseurs DOM
DocumentBuilder builder = factory.newDocumentBuilder();//analyseur DOM
Document document = builder.parse("mon fichier xml");
NodeList elements = document.getElementsByTagName("ma balise xml");
for(int i =0; i< elements.getLength();i++){
if(elements.item(i).hasChildNodes()){
NodeList sousElements = elements.item(i).getChildNodes();
for(int j = 0 ;j < sousElements.getLength() ;j++){
javax.swing.JOptionPane.showMessageDialog(null,sousElements.item(j));
}
}
}
ceci me donne bien le nom de mes balises enfant mais ca me donne aussi une balise comme ceci
[#text:
]
Pourquoi? A quoi ce résultat correspond?
|
Manu
Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
|
26 janv. 2010 à 08:16
#text correspond probablement au contenu textuel entre les éléments. Même un retour à la ligne est un texte, et c'est à vous de le prendre en compte ou non... --- Manu (moderator/modérateur)
|
botbot
Ville : Lyon
Membre depuis : 22 janv. 2010
Messages : 15
|
27 janv. 2010 à 09:15
Oui je m'en suis arrangé. Je teste si l'element a des attributs et ca saute les #text.
|
botbot
Ville : Lyon
Membre depuis : 22 janv. 2010
Messages : 15
|
27 janv. 2010 à 17:08
Bonjour.
Je reviens sur une question que j'ai déjà posé,et j'ai besoin de vos conseil avisées :)
J'ai un hashset(fils) dans un hashset(père).
Où dois-je définir la méthode toString()? Dans chaque class hashset (père et fils) sachant qu'elles contiennent une méthode iterator chacune?
Actuellement la méthode est définie pour les deux objets que je met dans le hashset fils.
lorsque je demande l'affichage du hashset pere, ça me retourne l'emplacement mémoire du hashset père...
|