Créer un fichier XML comme base de donnees avec JAVA [Résolu/Fermé]

Signaler
Messages postés
29
Date d'inscription
vendredi 28 novembre 2014
Statut
Membre
Dernière intervention
11 avril 2017
-
 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>

2 réponses

Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
2 696
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.
Messages postés
29
Date d'inscription
vendredi 28 novembre 2014
Statut
Membre
Dernière intervention
11 avril 2017

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.
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
2 696
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);
        // ...
Messages postés
29
Date d'inscription
vendredi 28 novembre 2014
Statut
Membre
Dernière intervention
11 avril 2017
>
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020

merci bien :)
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();}




}

}
j' ai pas compris est ce que Element et document sont des classe donnee a moi les 2 classes pour bien comprendre et merci
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
2 696
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