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 :

Java et XMl (JDOM)


Sujet :

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

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Java et XMl (JDOM)
    Bonjour tout le monde,

    j'ai un programme qui exporte des données sous forme d'xml selon un template qui 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' ?>
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>
    <UD>
    <IMG/>
    </UD>
    apres la génération du du fichier xml

    la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>
    se place en bas comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <UD re="" s="">
        <IMG file="test.jpg"/>
        <APPL app="">
            <ELEMENT commentaire="" designation="" id="1"/>
            <ELEMENT commentaire="" designation="" id="2"/>
        </APPL>
    </UD>
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>

    help me pleaaaaaaaaaaaase

    Merci d'avance

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    T'aider, oui certainement.

    Mais a quoi tu n'as même pas posé de question

    (au fait, ca serait bien de donner suite aux anciennes discutions que tu ouvres sans jamais soit mettre un résolu, soit répondre au gens qui t'on répondu);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par wax78 Voir le message
    T'aider, oui certainement.

    Mais a quoi tu n'as même pas posé de question

    (au fait, ca serait bien de donner suite aux anciennes discutions que tu ouvres sans jamais soit mettre un résolu, soit répondre au gens qui t'on répondu);
    bonjour,

    ma question c'est comment faire pour que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>
    soit placer après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Comment génères tu ton XML, tu as un bout de code ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Comment génères tu ton XML, tu as un bout de code ?
    voilà le code de génération de fichier 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
    28
    29
    30
    31
    32
    33
     
    // Lecture du fchier modele
    		Document docXml = XML.ReadXMLFile(sFicTemplateXml);
    		Element udElt = docXml.getDocumentElement();
    		udElt.setAttribute("s", XML.GetAttribute(monDocumentSource.getDocumentElement(), AT_SK));
    		udElt.setAttribute("re", XML.GetAttribute(monDocumentSource.getDocumentElement(), ATT_NM));
    		// Mise à jour de la reference au fichier Jpg
    		Element imgElt = XML.getFirstChildElement(udElt, "IMG");
    		String[] splitFile = sJpegFilename.split("\\\\");
    		imgElt.setAttribute("file", splitFile[splitFile.length-1]);
     
    		// On compte le nombre d'applicabilités
    		String[] listeApp = tableDocumentParts.applicability();
     
    		//
    		for(int iApp=0;iApp<listeApp.length;iApp++){
    			Element appElt = docXml.createElement("APP");
    			udElt.appendChild(appElt);
    			appElt.setAttribute("app", listeApp[iApp]);
    			for(int ii=0;ii<tableDocumentParts.getItemCount();ii++){
    				if(listeApp[iApp].equals(tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_APPLICABILITES)) && tableDocumentParts.hasIDvisible(ii)){
    					Element refElt = docXml.createElement("ELEMENT");
    					appElt.appendChild(refElt);
    					refElt.setAttribute("id", tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_ID));
    					String designation=tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_DESIGNATION);
    					refElt.setAttribute("designation", tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_DESIGNATION));
    					String commentaire = tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_COMMENTAIRE);
    					if(tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_REF_OS).length()>0) commentaire += " ( " +tableDocumentParts.getTable().getItem(ii).getText(CardocFolder.N_REF_OS)+" )";
    					refElt.setAttribute("commentaire", commentaire);
    				}
    			}
    		}
    		XML.saveXMLFile(docXml, sXmlFileName);

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, sauf que là ce qui est important c'est ReadXMLFile() et saveXMLFile() -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Oui, sauf que là ce qui est important c'est ReadXMLFile() et saveXMLFile() -_-°.
    bjr,

    voilà les 2 méthodes

    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
     
    	public static Document ReadXMLFile(String sXMLFileName){
     
    		Document document = null;
    		sXMLFileName = sXMLFileName.replaceFirst("file:/", "");
     
    		try{
    			// création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
     
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
    			// lecture du contenu d'un fichier XML avec DOM
    			File xml = new File(sXMLFileName);
    			document = constructeur.parse(xml);
    			return (document);
     
    			//traitement du document
     
    		}catch(ParserConfigurationException pce){
    			System.out.println(DocumentEditor.msg.getString("Msg.XML.Error2"));
    			return (document);
    		}catch(SAXException se){
    			System.out.println(DocumentEditor.msg.getString("Msg.XML.Error3"));
    			return (document);
    		}catch(IOException ioe){
    			System.out.println(DocumentEditor.msg.getString("Msg.XML.Error4"));
    			return (document);
    		}
     
     
    	}

    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
     
    public static void saveXMLFile(Document document,String sXMLFileName){
     
    		FileOutputStream fos;
    		//Pré-Traitement des URI
    		if (sXMLFileName.length() == 0) sXMLFileName = document.getDocumentURI().replaceFirst("file:/", "");
     
    		OutputFormat outf = new OutputFormat();
    		outf.setIndent(4);
    		outf.setIndenting(true);
    		outf.setEncoding("UTF-8");
    		outf.setStandalone(true);
    		outf.setLineWidth(1000);
     
    		try {     
    			   fos = new FileOutputStream(sXMLFileName);
    		       XMLSerializer xmls = new XMLSerializer(fos,outf);
    		       xmls.serialize(document);
    			   fos.close();
    		}
    		catch ( Exception e ) {
    		       System.out.println(DocumentEditor.msg.getString("Msg.XML.Error5")+e);
    		}	
    	}

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    T'aurais pu simplifier un peu -_-°.

    Bref, je ne sais pas ce que c'est que cette classe XMLSerializer ni d'où est venue l'idée de l'utiliser, mais c'est manifestement elle qui change de place le <?xml-stylesheet href='Export.xsl' type='text/xsl'?>.

    Tout ce code n'utilise absolument pas JDOM qui, lui, n'a pas ce problème.

    Ce que tu fais là c'est du DOM standard fourni par la bibli Java. Avec ça, quand on veut écrire un Document dans un fichier, on n'utilise pas XMLSerializer (qui n'est documenté nulle part.)
    On utilise Transformer. Et lui n'a pas ce problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par thelvin Voir le message
    T'aurais pu simplifier un peu -_-°.

    Bref, je ne sais pas ce que c'est que cette classe XMLSerializer ni d'où est venue l'idée de l'utiliser, mais c'est manifestement elle qui change de place le <?xml-stylesheet href='Export.xsl' type='text/xsl'?>.

    Tout ce code n'utilise absolument pas JDOM qui, lui, n'a pas ce problème.

    Ce que tu fais là c'est du DOM standard fourni par la bibli Java. Avec ça, quand on veut écrire un Document dans un fichier, on n'utilise pas XMLSerializer (qui n'est documenté nulle part.)
    On utilise Transformer. Et lui n'a pas ce problème.
    Bonjour Thelvin,

    en fait j'ai trouvé la solution et c'est effectivement comme tu viens de dire c'est un problème de XMLSerializer donc j'ai utilisé transformer qui a résolu le problème.

    voilà le code que j'ai fais à la place du XMLSerialize

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          Transformer t = TransformerFactory.newInstance().newTransformer();
          t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
          t.setOutputProperty(OutputKeys.INDENT, "yes");
          t.setOutputProperty(OutputKeys.METHOD, "xml");
          t.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
          t.setOutputProperty(OutputKeys.STANDALONE, "yes");
          t.setOutputProperty(OutputKeys.VERSION, "1.0");
          t.transform(new DOMSource(document), new StreamResult(fos));
    et aussi dans la parti de lecture modele et après ces 2 lignes de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              Document docXml = XML.ReadXMLFile(sFicTemplateXml);
              Element udElt = docXml.getDocumentElement();
    j'ai ajouté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              ProcessingInstruction pi =   (ProcessingInstruction)docXml.createProcessingInstruction("xml-stylesheet","href='Export.xsl' type='text/xsl'");
    	  docXml.insertBefore(pi, udElt);

    Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp pour votre aide et pour vos réponses

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par dounia.er Voir le message
    et aussi dans la parti de lecture modele et après ces 2 lignes de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              Document docXml = XML.ReadXMLFile(sFicTemplateXml);
              Element udElt = docXml.getDocumentElement();
    j'ai ajouté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              ProcessingInstruction pi =   (ProcessingInstruction)docXml.createProcessingInstruction("xml-stylesheet","href='Export.xsl' type='text/xsl'");
    	  docXml.insertBefore(pi, udElt);
    Ah bon ? Ben, on peut se demander pour quoi faire, mais ma foi, si ça t'arrange...

    En attendant je réitère que tout ceci n'a rien à voir avec JDOM, qui proposerait du code bien plus simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2010
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ah bon ? Ben, on peut se demander pour quoi faire, mais ma foi, si ça t'arrange...

    En attendant je réitère que tout ceci n'a rien à voir avec JDOM, qui proposerait du code bien plus simple.
    c'est ce code qui permet d'ajouter la balise

    <?xml-stylesheet, href='Export.xsl' type='text/xsl'?> avant la racine du fichier xml

    Ta raison avec JDOM c'est bcp plus simple mais moi on m'a obligé d'utiliser ça donc j'avais pas de choix

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

Discussions similaires

  1. [XSD] Java et XML: Génération du XSD (Schema XML)
    Par Kroline dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 10/08/2006, 18h03
  2. [JAVA et XML] Message XML avec paramètre JAVA
    Par MiJack dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 09/11/2005, 10h22
  3. Optimisation java et xml
    Par ujoodha dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/10/2005, 14h53

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