Précédent   Forum du club des développeurs et IT Pro > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/11/2012, 16h47   #1
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 16h57   #2
wax78
Modérateur
 
Avatar de wax78
 
Homme Renaud Warnotte
Développeur informatique
Inscription : août 2006
Messages : 2 170
Détails du profil
Informations personnelles :
Nom : Homme Renaud Warnotte
Âge : 32
Localisation : Belgique

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

Informations forums :
Inscription : août 2006
Messages : 2 170
Points : 4 136
Points : 4 136
Envoyer un message via MSN à wax78
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);
wax78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 17h26   #3
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
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"?>
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 18h26   #4
wax78
Modérateur
 
Avatar de wax78
 
Homme Renaud Warnotte
Développeur informatique
Inscription : août 2006
Messages : 2 170
Détails du profil
Informations personnelles :
Nom : Homme Renaud Warnotte
Âge : 32
Localisation : Belgique

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

Informations forums :
Inscription : août 2006
Messages : 2 170
Points : 4 136
Points : 4 136
Envoyer un message via MSN à wax78
Comment génères tu ton XML, tu as un bout de code ?
wax78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 18h44   #5
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
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);
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 18h47   #6
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 282
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 282
Points : 10 603
Points : 10 603
Envoyer un message via Skype™ à thelvin
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.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 19h15   #7
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
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);
		}	
	}
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 16h00   #8
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 282
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 282
Points : 10 603
Points : 10 603
Envoyer un message via Skype™ à thelvin
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.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 16h32   #9
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
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
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 16h37   #10
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 282
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 282
Points : 10 603
Points : 10 603
Envoyer un message via Skype™ à thelvin
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.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 16h47   #11
dounia.er
Invité régulier
 
Femme Dounia Dounia
Inscription : 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
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
dounia.er est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h03.


 
 
 
 
Partenaires

Hébergement Web