Créer un fichier XML comme base de donnees avec JAVA

Résolu
Bonjour,

j'ai un formulaire et je veux que chauque donnee que je saisie doit etre ajouter dans mon fichier xml,

//formulaire .html
<form action="Servlet_Student" method="post">
<table border="2">
<tr>
<td>Nom</td>
<td>
<input type=text name="nom_s">
</td>
</tr>
<tr>
<td>Prenom</td>
<td><input type=text name="prenom_s"></td>
</tr>
<tr>
<td>Semestre</td>
<td><input type=text name="semestre_s"></td>
</tr>
<tr>

<td colspan="2"><input type=submit value="send"></td>
</tr>
</table>
</form>

//servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  Element racine = new Element("Etudiants");
     Document document = new Document(racine);
     Element etudiant = new Element("Etudiant");
     Element nom = new Element("Nom");
     Element prenom= new Element("Prenom");
     Element semestre= new Element("Semestre");
        nom.setText(request.getParameter("nom_s"));
        prenom.setText(request.getParameter("prenom_s"));
        semestre.setText(request.getParameter("semestre_s"));
        etudiant.addContent(nom);
        etudiant.addContent(prenom);
        etudiant.addContent(semestre);
        racine.addContent(etudiant);
  
         
 
       
        PrintWriter pw=response.getWriter();
pw.println("fini");
 
  try {
         XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
         FileOutputStream fich = new FileOutputStream("D:/Students.xml");
         sortie.output(document, fich);
         fich.flush();
      fich.close();
         }
         catch (java.io.IOException e){
         e.printStackTrace();
         }
}

je veux a chaque fois que j ajoute une information il va l ajouter mais moi nn
<?xml version="1.0" encoding="UTF-8"?>
<Etudiants>
  <Etudiant>
    <Nom>lamya</Nom>
    <Prenom>sousou</Prenom>
    <Semestre>1</Semestre>
  </Etudiant>
</Etudiants>

et moi je veux comme ca
<?xml version="1.0" encoding="UTF-8"?>
<Etudiants>
  <Etudiant>
    <Nom>hgj</Nom>
    <Prenom>hjhg</Prenom>
    <Semestre>jgh</Semestre>
  </Etudiant>
  <Etudiant>
    <Nom>Fatiha</Nom>
    <Prenom>lakman</Prenom>
    <Semestre>2</Semestre>
  </Etudiant>
  <Etudiant>
    <Nom>llll</Nom>
    <Prenom>ppp</Prenom>
    <Semestre>3</Semestre>
  </Etudiant>
.
.
..
</Etudiants>

2 réponses

  1. Modérateur
    Bonjour,

    Si dans ton Document tu veux une liste d'étudiants il faut faire autant de
    racine.addContent(etudiant);
    que d'étudiants que tu as ton fichier. Mettre l'étudiant que tu ajoutes, mais aussi tout ceux qui étaient déjà dans le fichier, par exemple en utilisant le même objet
    racine
    pour toutes tes requêtes.
    1. ca marche pas je veux que a chaue fois j entrer nom prenom semstre il v a m ajouter dans mon fihcier xml et les information qui sont deja dans le fichier xml reste.
    2. Modérateur
      Essayes avec l'objet racine commun comme je le proposais, cela évite que tout soit effacé à chaque requête, le contenu s'accumule au fur et à mesure.

          private Element racine;
      
          @Override
          void init(ServletConfig config) {
              racine = new Element("Etudiants"); // lire le fichier existant ?
          }
      
          @Override
          public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              Document document = new Document(racine);
              // ...
    3. @KXmerci bien :)
    4. j'ai essayé cet exemple ms ca marche pas pour mois
      public class AjoutEtud extends HttpServlet {
      private Element racine;
      @Override
      public
      void init(ServletConfig config) {
      racine = new Element("Etudiants"); // lire le fichier existant ?
      }
      public org.jdom2.Document document;
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setCharacterEncoding( "UTF-8" );
      request.setCharacterEncoding("utf-8");
      Document document = new Document(racine);
      Element etudiant = new Element("Etudiant");
      Element nom = new Element("Nom");
      Element prenom= new Element("Prenom");
      Element cne= new Element("cne");
      cne.setText(request.getParameter("cne"));
      nom.setText(request.getParameter("nom"));
      prenom.setText(request.getParameter("prenom"));
      etudiant.addContent(nom);
      etudiant.addContent(prenom);
      etudiant.addContent(cne);
      while(racine.addContent(etudiant)!=null){
      PrintWriter pw=response.getWriter();
      pw.println("fini");
      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
      FileOutputStream fich = new FileOutputStream("/home/user/workspace/NoteM2i/Students.xml");
      sortie.output(document, fich);
      pw.println("l'etudiant bien Ajouter (-_-)");
      fich.flush();
      fich.close();}

      }

      }