Un fichier xml pour tester vos programmes
Exemple : fichier livre.xml (imcomplet)
<document>
<titre>Les vacances en Italie</titre>
<resume>Journal des peripeties du voyage</resume>
<section>
<chapitre>
<titre>le trajet Genève-Rome
en train</titre>
<paragraphe>
<titre>la réservation
des billets</titre>
<sous-paragraphe>C'était
le bronx à la gare ...<sous-paragraphe>
<sous-paragraphe><sous-paragraphe>
</paragraphe>
<paragraphe>
<titre>la nuit dans
le train</titre>
<sous-paragraphe>Il
faisait trop chaud ...<sous-paragraphe>
<sous-paragraphe>Trop
de bruit pour dormir ...<sous-paragraphe>
<remarque>...</remarque>
</paragraphe>
</chapitre>
<chapitre>
</chapitre>
</section>
<section>
<chapitre>
</chapitre>
<chapitre>
</chapitre>
</section>
(...)
<section>
<chapitre>
</chapitre>
</section>
</document>
Les balises fermantes (celles dont le nom est précédé d'un '/') ne doivent pas être prises en compte.
Le programme doit afficher un résultat du genre :
<chapitre>
est present dans les sections : 1, 2, 3, 4
nombre total d'occurences dans le document : 8
...
<remarque>
est present dans les sections : 1, 4
nombre total d'occurences dans le document : 3
...
<resume>
n'est present dans aucune section
nombre total d'occurences dans le document : 1
...
balises qui apparaissent 8 fois : <chapitre>, <sous-paragraphe>
balises qui apparaissent 7 fois : <grincement-de-dent>
... (par ordre décroissant du nombre d'occurences)
Indications :
Indications :
Définir une classe Element qui représentera les éléments XML qui forment les noeuds de l'arbre. Exemple (non complet)
class Element {
String nom; //nom de la balise
String valeur; //texte
List sousElements;
// construit un élément avec le nom n
Element(String n) { nom = n; }
// ajoute un élément se comme sous-élément
(à la fin de la liste)
ajouterSousElement(Element se) {...}
// créer sous arbre
// imprimer le sous arbre
}
Une solution avec constructeur récursif (TP4.java)
Une solution avec une pile (TP4pile.java)