Page d'accueilFindIt !Contact Cahier Java

Cahier Java

 Forum Java

Ce forum est dédié à l'ouvrage Bien programmer en Java 7, ainsi qu'aux éditions précédentes des Cahiers du Programmeur Java.
Utilisez-le pour toute demande d'information supplémentaire ou pour toute suggestion au sujet de ces ouvrages.
Pour les informations relatives au Cahier du programmeur Swing, merci d'utiliser le forum qui lui est dédié.
Vous pouvez consulter ces forums librement. Pour y participer, inscrivez-vous tout d'abord.

Sujets Messages récents Identification Inscription
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...


Page d'accueilFindIt !ContactDébut de la page

© Copyrights 1997-2023 eTeks - Tous droits réservés

Cahier Java