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

  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
    Ce qui devrait être output c'est un fichier xml qui contient le résultat obtenu avec le Parse de fichier xml . Donc j'ai utiliser StreamResult pour récupérer ce qui résulte de l’exécution de parse.

  8. #8
    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
    Donc tu viens de parser un fichier XML et la première chose que tu veux en faire, c'est de le recopier pour faire un autre fichier XML qui contient la même chose.

    Ça s'appelle "copier un fichier," tu n'as pas besoin de parseur pour ça.

    Bon, et si tu veux le faire quand même, StreamReasult n'a rien à voir avec JDOM, c'est quelque chose qu'on utilise avec les classes de manipulation XSLT incluses dans la bibli Java standard. JDOM n'est pas dans la bibli Java standard, et il n'y a pas de XSLT ici.

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

  9. #9
    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