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

Résolu
AFATIHAA Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
 karima -
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>

A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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.
0
AFATIHAA Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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);
        // ...
0
AFATIHAA Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
merci bien :)
0
karima
 
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();}




}

}
0
karima
 
j' ai pas compris est ce que Element et document sont des classe donnee a moi les 2 classes pour bien comprendre et merci
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Oui ce sont des classes, voir dans la documentation :

https://docs.oracle.com/javase/8/docs/api/index.html?org/w3c/dom/package-summary.html
0