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 :

changer les valeurs des attributs d'un fichier XML


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut changer les valeurs des attributs d'un fichier XML
    Bonjour pour tous,

    Mon but est de créer un code Java qui permet de changer les valeurs des attributs d’un fichier XML.

    Au debut mon fichier XML est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8" ?> 
    < application >
    <interface nom="magic"  abscisse="10"  ordonnee="20"largeur="700" longueur="600" >
      <barre nom="jtoolbar1" abscisse="20"  ordonnee="0" date="0" exit="0" graver="1" help="0" memory="1" open_bd="1" open_cd="1" open_file="1" open_image="1" oriontation="0" server="0" /> 
      </interface>
      </ application >
    Pour changer les valeurs des attributs longueur , largeur , abscisse , ordonnée , j’ai utilisé cette fonction :
    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
    public static void xmlOutputWrite(String cdeName)throws Exception
       {     
     
           try 
    {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                            //Récupère une instanxce de la classe DocumentBuilder
                            DocumentBuilder parser = factory.newDocumentBuilder();
                            //Effectue le parsing avec récupération du noeud DOM Document
                            Document document = parser.parse(cdeName);
                            StreamResult result1=new StreamResult(cdeName );
                            DOMSource source =new DOMSource(document);
     
                            //Element utilisateur = document.getDocumentElement();
                            String xpath = "/application/interface";
                            Element utilisateur = document.getElementById(xpath);
                            Node result = XPathAPI.selectSingleNode(document, xpath);
                            utilisateur = (Element)result;
                             utilisateur.setAttribute("abcisse", "50" ));
                           utilisateur.setAttribute("ordonne","30"));
                          utilisateur.setAttribute("longueur","900", ));
     
                          utilisateur.setAttribute("largeur","800",));
     
     
     
                            try {
                 TransformerFactory transformerFactory = TransformerFactory.newInstance();
                 Transformer transformer = transformerFactory.newTransformer();
                 transformer.setOutputProperty(OutputKeys.METHOD, "xml");
                 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
                 transformer.transform(source,result1);
               }
     
               catch (TransformerConfigurationException e) {
                 System.out.println(e.getMessage());
               }
     
     
     
           }
              catch (FactoryConfigurationError e) {
                        System.out.println(
                                "impossible de localiser une classe de construction");
                    }
       }
    Alors maintenant mon fichier XML est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8" ?> 
    < application >
    <interface nom="magic"  abscisse="10"  ordonnee="20"largeur="700" longueur="600" >
      <barre nom="jtoolbar1" abscisse="20"  ordonnee="0" date="0" exit="0" graver="1" help="0" memory="1" open_bd="1" open_cd="1" open_file="1" open_image="1" oriontation="0" server="0" /> 
     </interface>
    <interface nom="magic_view" abscisse="100"  ordonnee="100" largeur="600" longueur="600" >
      <barre nom="tools_bar" abscisse="0" ordonnee="0"  b_diapo="1" b_exit="1" b_fullscr="1" b_home="1" b_imginfo="1" b_imprimer="1" /> 
     </interface>
    <interface nom="magic_diaporama" abscisse="100" ordonnee="100" largeur="600" longueur="600" >
      <barre nom="barre_diapo"  abscisse="0" ordonnee="0"  faster="1" nom="p" pause="1" play="1" reserve="1" slower="1" stop="1" /> 
    </interface>
      </application>
    Dans ce cas, j’ai un problème : Comment je peux changer les attributs d’une interface spécifique ?

    Alors j’ai commencé par le parcours du document jusqu’à que je trouve l’interface désirée. Mais je n’ai pas pu changer les valeurs de ses attributs. L’exécution du code a provoqué des erreurs que je n’ai pas pu les corrigées.

    Voici la fonction utilisée :
    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
      public static void xmlOutputWrite(String cdeName,Magic_Med m)throws Exception
      {Attr rac ;
        try {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           //Récupère une instanxce de la classe DocumentBuilder
             DocumentBuilder parser = factory.newDocumentBuilder();
               //Effectue le parsing avec récupération du noeud DOM Document
                 Document document = parser.parse(cdeName);
                  StreamResult result1=new StreamResult(cdeName );
                   DOMSource source =new DOMSource(document);
                   Element utilisateur = document.getDocumentElement();
                    NodeList application = utilisateur.getChildNodes();
                    //le parcours du document
                   for (int i = 0; i < application.getLength(); i++)
                   {  if (application.item(i).getNodeType() == 1)
                       {
                       if ( application.item(i).getNodeName().equals("interface"))
                  {
                     NamedNodeMap interf = application.item(i).getAttributes();
                        rac=(Attr)interf.item(0);
                        if(rac.getValue().equals("magic"))
                    { //maintenant je suis dans l'interface desirée 
                      //changement des valeurs de ses attributs 
                      String xpath = "/application/interface";
                               utilisateur = document.getElementById(xpath);
                              Node result = XPathAPI.selectSingleNode(document, xpath);
                              utilisateur = (Element)result;
                            utilisateur.setAttribute("largeur",String.valueOf(m.getWidth() ));
                              utilisateur.setAttribute("longueur",String.valueOf(m.getHeight() ));
                               utilisateur.setAttribute("abcisse",String.valueOf(m.getX() ));
                               utilisateur.setAttribute("ordonne",String.valueOf(m.getY() ));
     
     
                     }}}}
                            try {
                 TransformerFactory transformerFactory = TransformerFactory.newInstance();
                 Transformer transformer = transformerFactory.newTransformer();
                 transformer.setOutputProperty(OutputKeys.METHOD, "xml");
                 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
                 transformer.transform(source,result1);
               }
     
               catch (TransformerConfigurationException e) {
                 System.out.println(e.getMessage());
               }
     
     
     
           }
              catch (FactoryConfigurationError e) {
                        System.out.println(
                                "impossible de localiser une classe de construction");
                    }
       }
    Voici les erreurs :
    java.lang.NullPointerException
    at XMLReadWrite.xmlOutputWrite(XMLReadWrite.java:590)
    at fermer.windowClosing(Magic_Med.java:384)
    at java.awt.Window.processWindowEvent(Window.java:1121)
    at javax.swing.JFrame.processWindowEvent(JFrame.java:266)
    at java.awt.Window.processEvent(Window.java:1079)
    at java.awt.Component.dispatchEventImpl(Component.java:3615)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    S’il vous plait aider moi à résoudre ce problème. Et merci.

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    tu as une exception à la ligne 590 de ta méthode xmlOutputWrite. Donne nous la ligne qui correspond à cette erreur. Sinon quand tu met ton code source n'oublie pas d'utiliser la balise code parce que la c'est vraiment iliisible.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

Discussions similaires

  1. Récupérer les valeurs des attributs dans un fichier XML ?
    Par chinoismasque dans le forum Windows Phone
    Réponses: 3
    Dernier message: 01/08/2011, 10h15
  2. Réponses: 1
    Dernier message: 22/01/2008, 17h24
  3. [PIL]Changer les valeurs des pixels
    Par progfou dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 14/12/2007, 13h27
  4. [Excel] Changer les valeurs des séries d'un graphe
    Par françois62 dans le forum ASP
    Réponses: 3
    Dernier message: 13/03/2007, 17h41
  5. changer la valeur des attribut
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/02/2006, 14h27

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