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 :

Output d'un fichier XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Par défaut Output d'un fichier XML
    Bonjour;
    je souhaite faire un programme java qui applique une feuille xsl à un fichier xml et avoir un fichier java comme résultat.
    Voici mes fichiers xsl et xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="JavaBean.xsl" type="text/xsl"?>
    <classes name="Book">
     
    	<class>
    		<attribut name="title" type="String"/>
    		<attribut name="page" type="String"/>
    		<attribut name="category" type="String"/>
     
    	</class>
    </classes>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output method="text"/>
     
    <xsl:template match="/">
     
    	public class <xsl:value-of select="classes/@name"/>
    	{
    		<xsl:apply-templates select="//attribut" mode="instanceVariable"/>
     
    		public <xsl:value-of select="classes/@name"/>()
    		{
    		}
     
    		<xsl:apply-templates select="//attribut" mode="accessor"/>
    		<xsl:apply-templates select="//attribut" mode="mutator"/>
    	}
    </xsl:template>
     
    <xsl:template match="Import">
    	import <xsl:value-of select="."/>;
    </xsl:template>
     
    <xsl:template match="attribut" mode="instanceVariable">
    		private <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>;
    </xsl:template>
     
    <xsl:template match="attribut" mode="accessor">
    		public <xsl:value-of select="@type"/> get<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>()
    		{
    			return <xsl:value-of select="@name"/>;
    		}
    </xsl:template>
     
    <xsl:template match="attribut" mode="mutator">
    		public void set<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>(<xsl:value-of select="@type"/> the<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>)
    		{
    			<xsl:value-of select="@name"/> = the<xsl:call-template name="initCap">
    				<xsl:with-param name="x" select="@name"/>
    			</xsl:call-template>;
    		}
    </xsl:template>
     
    <xsl:template name="initCap">
    	<xsl:param name="x"/>
    	<xsl:value-of select="translate(substring($x,1,1)
    							,'abcdefghijklmnopqrstuvwxyz'
    							,'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
    	<xsl:value-of select="substring($x,2)"/>
    </xsl:template>
     
     
    </xsl:stylesheet>
    Si j'applique manuellement le fichier xsl j'ai au moins comme resultat un fichier texte mais lorsque j'ai ajouter ce petit programme, il n'y a plus de fichier, l'affichage ce fait simplement sur la console et voici le programme:
    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
        public static void transform(String xmlfile,String xsltfile) throws Exception
    {
    TransformerFactory fabrique;
    StreamSource xml;
    StreamSource xslt;
    StreamResult dest;
    Transformer transformation;
     
    fabrique = TransformerFactory.newInstance();
    xml = new StreamSource(new File(xmlfile ));
    xslt = new StreamSource(new File(xsltfile));
    transformation = fabrique.newTransformer(xslt);
    dest = new StreamResult(System.out);
     
    transformation.transform(xml, dest);
    }
    J'ai pas troué la solution pour avoir un fichier (d'extension java si c'est possible)comme résultat, merci de me fournir de l'aide.

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Bonjour,

    L'affichage du résultat dans la console vient de le ligne 13
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dest = new StreamResult(System.out);
    Pour écrire dans un fichier, il faudrait faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dest = new StreamResult(new FileOutputStream("/chemin/vers/ton/fichier.java"));

  3. #3
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Par défaut
    Merci pour votre réponse, ça marche très bien sauf que lorsque j'ai essayé de faire ça aussi dans ce fichier, le XML a été bien crée mais il est vide. voici le code:
    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
    public static void Parsor() throws Exception {
    int nbr_class=-1;
    int i;
    StreamResult dest1;
    			SAXBuilder sxb=new SAXBuilder();
    			Document document=sxb.build(new File(orm.xml));
    			//Element entity=document.getRootElement();
     
    			final Namespace ORM_NS = Namespace.getNamespace("orm", "http://java.sun.com/xml/ns/persistence/orm");
     
    			XPath entitiesPath = XPath.newInstance("/orm:entity-mappings/orm:entity");
    			entitiesPath.addNamespace(ORM_NS);
    			XPath attribsPath = XPath.newInstance("orm:attributes/orm:basic");
    			attribsPath.addNamespace(ORM_NS);
     
    			List<Element> entities = entitiesPath.selectNodes(document);
    			for(Element entity : entities) {
                             nbr_class ++;
                                    System.out.println("<classe name"+entity.getAttributeValue("name")+">\n");
                                    for (i=0;i<=nbr_class;i++){
                                    name_cl=entity.getAttributeValue("name");
     
                                    }
                                    tabname[i]=name_cl;
     
                                    pag=pag+"<class>"+entity.getAttributeValue("name")+"type="+"String"+"\n";
    				List<Element> attribs = attribsPath.selectNodes(entity);
    				for(Element attrib : attribs) {
     
                                        pag=pag+"<attribut>"+attrib.getAttributeValue("name")+"</attribut>\n";
    					System.out.println("<attribut>"+attrib.getAttributeValue("name")+"</attribut>");
    				}
                                   pag=pag+ "</class> \n";
     
          dest1 = new StreamResult(new FileOutputStream("C:/Users/youssef/Documents/transformer/mon_fichier.xml"));
     
    			}
        }

    Merci

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Euh, ouais ? Et il lui arrive quoi, à dest1 ? C'est pas important ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Par défaut
    Si j'ai bien compris, je pense que dest1 n'est pas entrain de reçevoir le flux de sortie du parse. C'est pour ça qu'il se crée vide.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non mais déjà, c'est quoi qui devrait être output, en fait ?
    Qu'est-ce qu'un StreamResult vient f- aire ici ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Par défaut
    En fait, en parsant mon 1er fichier XML j'ai le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Book
    title
    page
    category
    Donc moi j'ai ajouter des "System.out.println" et j'ai en console le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="JavaBean.xsl" type="text/xsl"?>
    <classes name="Book">
     
    	<class>
    		<attribut name="title" type="String"/>
    		<attribut name="page" type="String"/>
    		<attribut name="category" type="String"/>
     
    	</class>
    </classes>
    Et ce résultat ce lui que je veux le recopier dans un nouveau fichier XML.

Discussions similaires

  1. Output d'un fichier XML
    Par miled dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 01/05/2011, 16h23
  2. [XSLT 1.0] Output d'un fichier XML
    Par miled dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 30/04/2011, 04h38
  3. problème avec output fichier XML
    Par soumti84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/04/2009, 18h13
  4. [XSLT] output dans un fichier xml
    Par bobkorn dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 11/04/2008, 17h40
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29

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