Exercices avec l'API DOM

Une classe, des élèves et des notes

Récupérez les fichiers eleve.xml et classe.xml, ainsi que leur DTD eleve.dtd et classe.dtd. Le but du TP est de produire un nouveau document XML qui contiennent les relevés de notes destinés à chaque élève, rangés par classe~:


<liste-classe>
  <classe id="cla1">
    <eleve id="el1">
      <nom>Dupont</nom>
      <prenom>Sylvain</prenom>

      <matiere>
        <nom>informatique</nom>
        <coeff>4</coeff>
        <note>8</note>

      </matiere>
      <matiere>
        <nom>mathematiques</nom>
        <coeff>3</coeff>
        <note>10</note>

      </matiere>
      <matiere>
        <nom>anglais</nom>
        <coeff>2</coeff>
        <note>13</note>

      </matiere>
      <moyenne>9.77</moyenne>
    </eleve>
    <eleve id="el4"> ... </eleve>

  </classe>
  <classe id="cla2">...</classe>
...
<liste-classe>

Écrivez un programme à l'aide de l'API DOM qui lit le fichier classe.xml et le recopie correctement indenté dans un nouveau fichier sortie.xml.

Pour les éléments ne contenant qu'un seul fils (donc un noeud texte dans le cas de classe.xml ou de eleve.xml), vous écrirez la balise ouvrante, la zone de texte et la balise fermante sur une même ligne.

En point d'entrée, vous pouvez récupérer le programme MonTPDom1.java pour obtenir des documents DOM.

On commence l'exercice principal. Votre objectif est maintenant, à partir de deux documents source, d'en créer un troisième. Écrivez un programme qui créé un document resultat qui contient la liste des classes, avec pour chaque classe la liste de ses élèves (on veut le nom et le prénom).

Pour la sortie, vous passerez maintenant par un serialiseur qui s'occupera de l'écriture de votre document résultat dans un flux en sortie (toujours dans le fichier sortie.xml. Vous pouvez travailler à partir de MonTPDom2.java.

Ajoutez à vos éléments eleve toutes les matières effectuées (on prendra pour le moment toutes celles qui sont présentes dans la classe dans le document classe.xml). On devra trouver les informations sur le nom et sur le coefficient de chaque matière.
Ajoutez maintenant la note de chaque élève dans la matière. N'oubliez pas de supprimer les attributs superflus.
Calculez la moyenne générale pondérée d'un élève. Ajoutez le noeud correspondant.
Votre programme doit lever une exception lorsqu'un élève n'apparaît pas dans la classe qui correspond à son attribut classe.