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

Résolu/Fermé
AFATIHAA Messages postés 29 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 11 avril 2017 - Modifié par KX le 18/08/2016 à 07:54
 karima - 26 août 2016 à 17:03
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 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
18 août 2016 à 08:00
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 vendredi 28 novembre 2014 Statut Membre Dernière intervention 11 avril 2017
18 août 2016 à 18:07
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 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
18 août 2016 à 19:55
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 vendredi 28 novembre 2014 Statut Membre Dernière intervention 11 avril 2017 > KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022
23 août 2016 à 17:18
merci bien :)
0
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
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 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
23 août 2016 à 16:52
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