Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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 :
    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 :
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>
    se place en bas comme suit :

    Code :
    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 Renaud Warnotte
    Développeur informatique
    Inscrit en
    août 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Nom : Homme Renaud Warnotte
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 2 582
    Points : 4 390
    Points
    4 390

    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);

  3. #3
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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 :
    <?xml-stylesheet href='Export.xsl' type='text/xsl'?>
    soit placer après

    Code :
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro Renaud Warnotte
    Développeur informatique
    Inscrit en
    août 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Nom : Homme Renaud Warnotte
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 2 582
    Points : 4 390
    Points
    4 390

    Par défaut

    Comment génères tu ton XML, tu as un bout de code ?

  5. #5
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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 :
    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

    Inscrit en
    septembre 2004
    Messages
    9 486
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 486
    Points : 14 311
    Points
    14 311

    Par défaut

    Oui, sauf que là ce qui est important c'est ReadXMLFile() et saveXMLFile() -_-°.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais.
    Partagez vos connaissances, mais aussi comment s'en servir.

  7. #7
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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 :
    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 :
    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

    Inscrit en
    septembre 2004
    Messages
    9 486
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 486
    Points : 14 311
    Points
    14 311

    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.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais.
    Partagez vos connaissances, mais aussi comment s'en servir.

  9. #9
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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 :
    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 :
    1
    2
    3
     
              Document docXml = XML.ReadXMLFile(sFicTemplateXml);
              Element udElt = docXml.getDocumentElement();
    j'ai ajouté ça :

    Code :
    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

    Inscrit en
    septembre 2004
    Messages
    9 486
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 486
    Points : 14 311
    Points
    14 311

    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 :
    1
    2
    3
     
              Document docXml = XML.ReadXMLFile(sFicTemplateXml);
              Element udElt = docXml.getDocumentElement();
    j'ai ajouté ça :

    Code :
    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.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais.
    Partagez vos connaissances, mais aussi comment s'en servir.

  11. #11
    Invité régulier
    Femme Profil pro Dounia Dounia
    Inscrit en
    décembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Nom : Femme Dounia Dounia
    Localisation : Maroc

    Informations forums :
    Inscription : décembre 2010
    Messages : 29
    Points : 6
    Points
    6

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •