Problème de récupération d'une valeur dans un attribut d'une balise
Bonjour à tous,
Par avance merci de m'éclairer sur mon problème.
J'ai le fichier xml suivant :
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 26 27 28 29 30 31 32 33 34
|
<maisons>
<maison id="1">
<RDC>
<cuisine surface-m2="12">Evier Inox. Mobilier encastré</cuisine>
<WC>Lavabo.</WC>
<séjour surface-m2="38">Cheminée en pierre. Baie vitrée</séjour>
<bureau surface-m2="14">Bibliothèque</bureau>
<garage/>
</RDC>
<étage>
<terrasse/>
<chambre surface-m2="28" fenetre="3">
<alcove surface-m2="8"/>
</chambre>
<chambre surface-m2="18"/>
<salledeBain surface-m2="15">
Douche, baignoire, lavabo
</salledeBain>
</étage>
</maison>
<maison id="2">
<RDC>
<cuisine surface-m2="12">en ruine</cuisine>
<garage/>
</RDC>
<étage>
<mirador surface-m2="1">
Vue sur la mer
</mirador>
<salledeBain surface-m2="15">Douche</salledeBain>
</étage>
</maison>
</maisons> |
Et je dois utiliser un parseur sax afin d'avoir en sortie sur mon pc la chose suivante :
Maison 1:
superficie totale : 125 m2
Maison 2:
superficie totale : 28 m2
Ainsi j'ai crée une classe java étendant DefaultHandler et dans la méthode startElement j'ai ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
if(localName.equalsIgnoreCase("maison")){
System.out.println("Maison " + attributs.getValue(0) + " :");
}
float surface = 0;
for (int index = 0; index < attributs.getLength(); index++) {
if (attributs.getLocalName(index).equalsIgnoreCase("surface-m2")){
surface += Float.parseFloat(attributs.getValue(index));
}
System.out.println("superficie totale " + surface);
}
} |
ça ne va absolument pas. Je n'arrive pas à additionner la surface de mes pièces.
Surtout que dans la première balise maison. j'ai une alcôve dans la chambre qui fait donc partie des 28m2. donc je peux pas faire une boucle sur "surface-m2" mais du coup je sais pas du tout comment m'en sortir...
Si quelqu'un pouvait au moins me donner une piste de réflexion ça serait super sympa :)
Merci à vous !