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 :

probleme en XML + java


Sujet :

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

  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut probleme en XML + java
    Salut,
    je veux changer les valeurs des attributs d'un fichier XML en utilisant un code java.
    alors j'ai trouvé ce code qui ne detecte aucune erreur .
    Mais aussi il n'a pas changé les valeurs des attributs du fichier XML.
    S'il vous plait aider moi à completer ce code pour qu'il puisse changer les valeurs des attributs.

    voici le code utilisé:
    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
     
    import org.apache.xpath.* ;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Node;
    import org.w3c.dom.Attr;
    import org.w3c.dom.NamedNodeMap;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import org.w3c.dom.NodeList.*;
    import javax.xml.transform.*;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.dom.DOMSource;
    import java.lang.*;
    import java.util.*;
    import javax.naming.directory.*;
    import java.io.*;
    import java.util.*;
     
     
    public class  XMLReadWrite {
        public  XMLReadWrite() {
        }
        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);
    			//Element utilisateur = document.getDocumentElement();
    			String xpath = "/application/interface";
    			Element utilisateur = document.getElementById(xpath);
    			Node result = XPathAPI.selectSingleNode(document, xpath);
    			utilisateur = (Element)result;
    			utilisateur.setAttribute("longueur","500"); 
    			utilisateur.setAttribute("largeur","500");  
    }
              catch (FactoryConfigurationError e) {
                        System.out.println(
                                "impossible de localiser une classe de construction");
                    }
     
     
     
        }public static void main (String []args){
          XMLReadWrite xx=new XMLReadWrite();
         try {
                     xx.xmlOutputWrite("exemple.XML");
     
                 } catch (Exception ex) {
                       ex.printStackTrace();
                                         }
     
     
       }
     
    }
    voici le fichier XML:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" ?> 
    <application>
    <interface nom="Magic_MED" longueur="0" largeur="0"/>
     
      </application>
    Je veux que les valeurs des attributs longeur et largeur seront 500 au lieu de 0
    et un grand Merci de votre aide .

  2. #2
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut besoin de reponse
    s'il vous plait j'attends vos aides.
    c'est important pour mon projet fin d'etudes
    et merci

  3. #3
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    Ben c'est évident !!

    Ton fichier tu le parses (donc tu le lis) mais où vois tu un code qui ecrase le fichier ??????

    La modif est faite en mémoire (setAttribute) mais ton fichier ne change pas !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Par défaut
    Déjà il faut ouvrir le fichier et le transformer en document XML:
    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
     
    	/**
             * Transforms a xml file into a DOM XML document.
             * 
             * @param file
             *            The file to parse
             * @return The DOM XML document
             */
    	public static Document transformToDocument(File f) throws Exception {
    		InputStreamReader converter = new InputStreamReader(new FileInputStream(f), Charset.forName("UTF-8"));
    		Source xmlSource = new StreamSource(converter);
    		Result xmlResult = new DOMResult();
    		try {
    			Transformer transformer = TransformerFactory.newInstance().newTransformer();
    			transformer.transform(xmlSource, xmlResult);
    			return (Document) ((DOMResult) xmlResult).getNode();
    		} catch (TransformerConfigurationException tce1) {
    		} catch (TransformerException te1) {
    		} finally {
    			if (converter != null)
    				try {
    					converter.close();
    				} catch (IOException ioe1) {
    				}
    		}
    		return null;
    	}
    Ensuite modifier les attributs voulu dans le document, puis enregistrer les modification :

    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
     
    			StreamResult xmlfile =  new StreamResult(file);
    			...
     
    			/* Serialization */
    			DOMSource domSource = new DOMSource(document);
    			TransformerFactory transformFactory = TransformerFactory.newInstance();
     
    			Transformer serializer;
     
    			try {
    				serializer = transformFactory.newTransformer();
    			} catch(javax.xml.transform.TransformerConfigurationException e) {
    				// Traiter l'erreur
    			}
     
    			/* final step */
    			try {
    				serializer.transform(domSource, xmlfile);
    			} catch(javax.xml.transform.TransformerException e) {
    				// Traiter l'erreur
    			}
    J'espère que cela peut t'aider.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut probleme en XML+Java
    merci de vos aides,
    j'ai compris votrs solution mais je n'ai pas pu l'utiliser .
    s'il vous plait donner moi le bon ordre pour bien employer le code
    et un grand merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Par défaut
    Voilà une petite classe qui fait le travail. Une fois compris la gestion des documents DOM XML en java, ca devrait aller de mieux en mieux. Surtout lire les documentations javadocs et tutoriaux (SUN en autre).

    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
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
     
    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMResult;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
     
    public class  XMLReadWrite {
     
        public static void main (String []args) {
        	try {
        		File file = new File("exemple.xml");
        		Document document = fileToDocument(file);
    			NodeList nodeList = document.getElementsByTagName("interface");
    			Node node = nodeList.item(0); // on suppose qu'il y a qu'un seul noeud interface
    			node.getAttributes().getNamedItem("longueur").setNodeValue("500");
    			node.getAttributes().getNamedItem("largeur").setNodeValue("500");
    			documentToFile(document, file);
        	} catch (Exception ex) {
        		ex.printStackTrace();
        	}
       }
     
    	/**
             * Transforms a xml file into a DOM XML document.
             * 
             * @param file
             *            The file to parse
             * @return The DOM XML document
             */
    	public static Document fileToDocument(File file) throws Exception {
    		InputStreamReader converter = new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"));
    		Source xmlSource = new StreamSource(converter);
    		Result xmlResult = new DOMResult();
    		Transformer transformer = TransformerFactory.newInstance().newTransformer();
    		transformer.transform(xmlSource, xmlResult);
    		converter.close();
    		return (Document) ((DOMResult) xmlResult).getNode();
    	}
     
    	/**
             * Transforms a DOM XML document into xml file.
             * 
             * @param document
             *                              The DOM XML document
             * @param file
             *                              The output file
             */
    	public static void documentToFile(Document document, File file) throws Exception {
    		StreamResult xmlfile = new StreamResult(file);
     
    		/* Serialization */
    		DOMSource domSource = new DOMSource(document);
    		TransformerFactory transformFactory = TransformerFactory.newInstance();
     
    		Transformer serializer = transformFactory.newTransformer();
    		/* final step */
    		serializer.transform(domSource, xmlfile);
    	}
     
    }
    A +

Discussions similaires

  1. Probleme UTF-8 java, fichier xml
    Par fardon57 dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 23/11/2009, 18h08
  2. probleme IE + XML
    Par hobbes80 dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 03/06/2005, 09h21
  3. Problème d'installation java
    Par mickey hollywood dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 23/03/2005, 11h01
  4. Réponses: 2
    Dernier message: 07/01/2005, 20h40
  5. [FLASH MX] Probleme avec XML
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 16/12/2004, 19h30

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