IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

mise a jour fichier xml en java


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut mise a jour fichier xml en java
    Salut tout le monde, tout d’abord j’ai eu un problème au niveau mise a jour d’un fichier XML, après j’ai trouvé une solution de sauvegarder le fichier XML dans un tableau puis j’ajoute les élément dans le tableau enfin je génèrer a nouveau mon XML a partir du tableau, cette solution na pas été éficasse (beaucoup de traitement …..) donc si quelqu’un a une autre solution qui utilise les méthodes de java par exemple j’ai trouvé ce code qui se rapproche de ce que je veut :

    Node root = doc.get_DocumentElement();

    //Create a new node.
    Element elem = doc.CreateElement("price");
    elem.set_Text("19.95");

    //Add the node to the document.
    root.InsertAfter(elem, root.get_FirstChild());
    mais il y a un autre problème de tel sorte que ce code là utilise une bibliothèque(import System.*; import System.IO.*; import System.Xml.* que je n’arrive pas a trouvé le .jar approprié.

    Alors : mon code XML initial :

    <?xml version="1.0" encoding="UTF-8"?>
    <ordinateurs>
    <ordinateur classe="C1">
    <CPU>4 GHZ</CPU>
    <DRAM>512 MO</DRAM>
    <IP>192.168.1.4</IP>
    </ordinateur>
    <ordinateur classe="C2">
    <CPU>3.8 GHZ</CPU>
    <DRAM>256 MO</DRAM>
    <IP>192.168.1.5</IP>
    </ordinateur>
    </ordinateurs>

    Et je veu avoir :

    <?xml version="1.0" encoding="UTF-8"?>
    <ordinateurs>
    <ordinateur classe="C1">
    <CPU>4 GHZ</CPU>
    <DRAM>512 MO</DRAM>
    <IP>192.168.1.4</IP>
    </ordinateur>
    <ordinateur classe="C2">
    <CPU>3.8 GHZ</CPU>
    <DRAM>256 MO</DRAM>
    <IP>192.168.1.5</IP>
    </ordinateur>
    <ordinateur classe="C2">
    <CPU>3.6 GHZ</CPU>
    <DRAM>128 MO</DRAM>
    <IP>192.168.1.6</IP>
    </ordinateur>

    </ordinateurs>
    Si quelqu’un a une idée sur le .jar que je suis en train de cherché ou/et la solution de faire ajouté du code dans le fichier XML j'ai vraiment besoin d'aide

    Merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    A mon avis, le code que tu as vient d'une librairie perso développée par quelqu'un ne connaissant pas vraiment les conventions. Personnellement, je ne ferais pas confiance à une librairie déclarant des méthodes "InsertAfter" et "CreateElement".

    Par contre, pour manipuler du XML, tu as la librairie JDOM (et la librairie DOM) qui contiennent des méthodes similaires et qui elles, sont éprouvées et utilisées par un bon nombre de développeurs.

    Elles te permettront sans doute de faire ce que tu veux
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    C'est normal que son code ne respecte pas les conventions, parce que c'est pas du java son code .
    Le J# .NET, ce n'est pas du java:
    http://msdn2.microsoft.com/fr-fr/lib...er(VS.80).aspx

    Donc tu peux les rechercher autant que tu veux les .jar, ca m'etonnerait que tu les trouves .



  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    OUI je viens d’utiliser la librairie JDOM pour manipuler du XML, mais je n’ai pas trouvé les méthodes qui me permette de faire ce que je veux (ajouter un noeud dans un fichier XML)
    s'il y a une solution J’ai vraiment besoin d’aide SVP …

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    pour metre le probleme résolu je vai proposé une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    package pk1;
    import java.io.*;
     
    import org.jdom.*;
    import org.jdom.input.*;
     
    import java.util.Iterator;
    import java.util.List;
     
     
    public class TableauXml 
    { static String tab[]=new String[100];
    static int e=0;
    	static org.jdom.Document document;
    	 static Element racine;
     
    	   public static void main(String[] args)
    	   {
    	      //On crée une instance de SAXBuilder
    	      SAXBuilder sxb = new SAXBuilder();
    	      try
    	      {
    	         //On crée un nouveau document JDOM avec en argument le fichier XML
    	         //Le parsing est terminé ;)
    	         document = sxb.build(new File("Fichier_description.xml"));
    	      }
    	      catch(Exception e){}
     
    	      //On initialise un nouvel élément racine avec l'élément racine du document.
    	      racine = document.getRootElement();
    	      //initialisation_tableau();
    	      parcourFichier();
    	      //afficherTab();
    	      ajouter("C2","6","7","8");
    	     // afficherTab();
    	      //supprimer("5","6","7","8");
    	      //afficherTab();
    	      maj();
    	   }
    	   public static void initialisation_tableau()
    	   {
    	   	      for(int f=0;f<tab.length;f++)
    	   	    	  tab[f]="";
    	   }
    	   static void maj()
    	   {
    		   for(int k=0;k<tab.length;k=k+4)
    			   if(tab[k]!=null)
    			   FichierDescriptionMachine.remplir(tab[k],tab[k+1],tab[k+2],tab[k+3]);
    		   //FichierDescriptionMachine.remplir("1","2","3","4");
    		   FichierDescriptionMachine.affiche();
     
    		   FichierDescriptionMachine.enregistre("Fichier_description.xml");
    	   }
    static void supprimer(String s1,String s2,String s3,String s4)
    {
    	for(int k=0;k<tab.length;k++)
    		   if(tab[k]==s1 && tab[k+1]==s2 && tab[k+3]==s3 && tab[k+4]==s4)
    			   for(int d=k;d<k+4;d++)
    				   tab[d]=tab[d+4];
     
    }
    static void ajouter(String s1,String s2,String s3,String s4)
    {int a=e,indice=0;
    boolean var=true;
    	for(int g=0;g<tab.length;g=g+4)
    		{indice=indice+1;
    		if(tab[g]==s1)
    		 {var=false;
    		 break;}
    		}
    		if(var==true)
    		{
    	     tab[a]=s1;
    	     tab[a+1]=s2;
    	     tab[a+2]=s3;
    	     tab[a+3]=s4;
    		}
     
    	System.out.println(indice+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    }
    	   static void parcourFichier()
    	   {
    	      int j=0;
     
     
    	      List listEtudiants = racine.getChildren("ordinateur");
    	      Iterator i = listEtudiants.iterator();
     
     
    	      while(i.hasNext())
    	      {
    	         Element courant = (Element)i.next();
    	        // System.out.println(courant.getAttributeValue("classe"));
    	        // System.out.println(courant.getChild("CPU").getText());
    	        // System.out.println(courant.getChild("DRAM").getText());
    	        // System.out.println(courant.getChild("IP").getText());
     
    	         tab[j+0]=courant.getAttributeValue("classe");
    	         tab[j+1]=courant.getChild("CPU").getText();
    	         tab[j+2]=courant.getChild("DRAM").getText();
    	         tab[j+3]=courant.getChild("IP").getText();
    	         j=j+4;
    	        e=j;	 
    	      }  
    	   }
     
                   public static void afficherTab()
                     {
                	   for(int k=0;k<tab.length;k++)
                		   if(tab[k]!=null)
                		   System.out.println(tab[k]);
     
                     }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    package pk1;
    import java.io.*;
     
    import org.jdom.*;
    import org.jdom.output.*;
     
     
    public class FichierDescriptionMachine 
    {	
    	   static Element racine = new Element("ordinateurs");
    	   static org.jdom.Document document = new Document(racine);
     
    	   public static void remplir (String a,String b,String c,String d)
    	      {
     
     
    		   Element ordinateur1 = new Element("ordinateur");
    	       racine.addContent(ordinateur1);
     
     
    	      Attribute classe1 = new Attribute("classe",a);
    	      ordinateur1.setAttribute(classe1);
     
     
    	      Element CPU1 = new Element("CPU");
    	      CPU1.setText(b);
    	      ordinateur1.addContent(CPU1);
     
    	      Element DRAM1 = new Element("DRAM");
    	      DRAM1.setText(c);
    	      ordinateur1.addContent(DRAM1);
     
    	      Element IP1 = new Element("IP");
    	      IP1.setText(d);
    	      ordinateur1.addContent(IP1);
     
     
     
    	      }
     
     
     
     
     
    public static void main(String[] args)
    {
     
    	   remplir ("C1","4","512","192.168.1.4");
    	   remplir ("C2","3.8","256","192.168.1.5");
     
     
       affiche();
     
       enregistre("Fichier_description.xml");
     
     
    }
     
     
     
    static void affiche()
    {
    try
    {
     
       XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
       sortie.output(document, System.out);
    }
    catch (java.io.IOException e){}
    }
     
    static void enregistre(String fichier)
    {
    try
    {
     
       XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
     
       sortie.output(document, new FileOutputStream(fichier));
    }
    catch (java.io.IOException e){}
    }
     
    }

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    J'ai de gros doutes sur la solution que tu proposes... Je n'ai pas étudié ton code en détail, mais cette ligne par exemple me choque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab[k]==s1 && tab[k+1]==s2 && tab[k+3]==s3 && tab[k+4]==s4)
    Sachant que s1, s2, s3 et s4 sont des String... en java, la comparaison de chaînes de caractères se fait via la méthode "equals()"; Du coup, "==" risque fort de ne pas donner le résultat attendu.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par zorm
    C'est normal que son code ne respecte pas les conventions, parce que c'est pas du java son code .
    Le J# .NET, ce n'est pas du java
    Certes... bien vu! Je n'avais même pas remarqué
    Mais il me semblait que les conventions de nommage (noms de méthodes en minuscules) étaient génériques et s'appliquaient à tous les langages OO, et pas seulement à Java...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 146
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par CyberChouan
    J'ai de gros doutes sur la solution que tu proposes... Je n'ai pas étudié ton code en détail, mais cette ligne par exemple me choque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab[k]==s1 && tab[k+1]==s2 && tab[k+3]==s3 && tab[k+4]==s4)
    Sachant que s1, s2, s3 et s4 sont des String... en java, la comparaison de chaînes de caractères se fait via la méthode "equals()"; Du coup, "==" risque fort de ne pas donner le résultat attendu.
    Ca marche peut être dans son cas si le tab[k] est une référence vers s1.
    En effet, l'opérateur == ne teste pas si deux chaines sont égales (c'est equals qui le fait) mais si les 2 variables sont des références vers le meme objet.
    Si les valeurs de son tableau sont initialisés par tab[k]=s1, alors le test tab[k]==s1 rendra true (il me semble)

    En regardant le code, il est fort à parier que c'est ca ^^.
    Best Web Design Software ever - http://tweakstyle.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/09/2018, 22h38
  2. [XML] Mise à jour fichier XML
    Par foudinfo dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/06/2009, 16h19
  3. [BDD][XML] mise à jour fichier xml est-il possible ?!
    Par akara dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/07/2007, 13h15
  4. [DOM] Ecriture d'un fichier XML en java
    Par fidififouille dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 12/05/2004, 09h32
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo