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

APIs XML Discussion :

[XML] fichier plat vers xml


Sujet :

APIs XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut [XML] fichier plat vers xml
    Bonjour

    je voudrais savoir ce que je peut utiliser pour parser un fichier plat en fichier xml

    pour tout vous dire je débute avec le xml et je ne sais trops vers ou me diréger.

    merci d'avence pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    tout ce qui est transformation cvs, txt, ... vers xml j'utilise des programmes maison écrit en python.

    Donc si tu explicites ton problème: comment en construit ton txt , ... je peux te donner un coup de main pour écrire le programme qui va bien

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut merci
    Bonjour

    je serai trés heureuse de bénificier de votre aide .
    pour le détail que vous demander je ne comprend pas ce que vous voulait savoir*

    les fichiers plats sont des fichier de données organisé en réalité je peut avoir n'importe qu'el type de données l'essenciel et que je peux les transformer en un fichier xml

    pour pyton je ne sais pas programmer en ce language; mais moi je penssait que je pourrait utilisé java

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    En faite vous me donner déjà beaucoup de réponse:
    votre fichier plat est organisé cela veux dire que entre le caractère 1 et 10 j'ai le code client, entre 10 et 20 j'ai l'article ,... (ceci n'est qu'un exemple).

    je ne me déclare pas programmeur en java mais le code python est assez facile à lire pour pouvoir trouver l'algo.
    je vous propose un programme python qui prend en entrée votre fichier plat et un fichier xml qui décrit la structure de votre fichier plat
    flat2xml.py
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    #!/usr/bin/python
    import os.path, os, shutil, time, string
    import sys, getopt
    from xml.dom.minidom import *
    from xml import xpath
     
    pg_version="1.9"
    pg_author="Frederic Aoustin"
    pg_contact="fraoustin@yahoo.fr"
    pg_name="flat2xml"
     
    # todo
    # not fix
    # gerer log et trace
     
    def usage():
    	print """Usage:
    %s
    %s -h --help                                  : help
    %s -v                                         : version
    %s -i FlatFile -d XmlDescriptor [-o XmlOut]   : convert file in xml
    """ % (pg_name, pg_name, pg_name, pg_name)
    	version()
     
    def version():
    	print "Version:\n%s version %s by %s(%s)" % (pg_name, pg_version, pg_author, pg_contact)
     
    def saveFile(path, content):
    	endfile = open(path,'w')
    	endfile.write(content)
    	endfile.close()
     
    def readFile(inFile):
            f=open(inFile,'r')
            contents=f.readlines()
            f.close()
            return contents
     
    def init(xmldoc):
    	if "num" in xmldoc.documentElement.attributes.keys():
    		fix = True
    		num = xmldoc.documentElement.attributes["num"].value
    	else:
    		fix = False
    		num="-1"
     
    	if "name" in xmldoc.documentElement.attributes.keys():
    		name = xmldoc.documentElement.attributes["name"].value
    	else:
    		name="root"
     
    	return fix, num, name
     
    def getAttr(node, attr, default="unknown"):
    	if attr in node.attributes.keys():
    		return node.attributes[attr].value
    	return default
     
    def createElt(xmldoc, node, desc, data, ids):
    	for n in desc.childNodes:
        		if n.nodeType == Node.ELEMENT_NODE and n.nodeName == "element":
    			xmlelt = xmldoc.createElement(n.lastChild.data)
    			mi=getAttr(n,"min","0")
    			mx=getAttr(n,"max","")
    			if mi != "" and mx != "":
    				xmlelt.appendChild(xmldoc.createTextNode(data[int(mi):int(mx)]))
    			if mi != "" and mx == "":
    				xmlelt.appendChild(xmldoc.createTextNode(data[int(mi):]))
    			if mi == "" and mx != "":
    				xmlelt.appendChild(xmldoc.createTextNode(data[:int(mx)]))
    			if mi == "" and mx == "":
    				xmlelt.appendChild(xmldoc.createTextNode(data))
    			node.appendChild(xmlelt)
    			createElt(xmldoc, xmlelt, n , data, ids)
        		if n.nodeType == Node.ELEMENT_NODE and n.nodeName == "row":
    			xmlelt = xmldoc.createElement(getAttr(n,"name","row"))
    			node.appendChild(xmlelt)
    			createElt(xmldoc, xmlelt, n , data, ids)
        		if n.nodeType == Node.ELEMENT_NODE and n.nodeName == "attr":
    			if "min" in n.attributes.keys():
    				mi=getAttr(n,"min","0")
    				mx=getAttr(n,"max","")
    				if mi != "" and mx != "":
    					d=data[int(mi):int(mx)]
    				if mi != "" and mx == "":
    					d=data[int(mi):]
    				if mi == "" and mx != "":
    					d = data[:int(mx)]
    				if mi == "" and mx == "":
    					d = data
    				node.setAttribute(n.lastChild.data,d)
    			if "fix"  in n.attributes.keys():
    				node.setAttribute(n.lastChild.data,getAttr(n,"fix","0"))
    			if "param"  in n.attributes.keys():
    				if getAttr(n,"param","0") == "id":
    					node.setAttribute(n.lastChild.data,ids)
     
    def convert(flat, xml, out=None):
    	try:
    		data = readFile(flat)
    		xmldoc = parse(xml)
    		root=xmldoc.documentElement
    		fix, num, name = init(xmldoc)
     
    		xmlout = Document()		
    		xmltag = xmlout.createElement(name)
    		xmlout.appendChild(xmltag)
     
    		for i in data:
    			i =i[:-1]
    			if fix:
    				row = xpath.Evaluate("/root/row[@id='%s']" % i[0:int(num)] , root)		
                            else:
                                    rows = xpath.Evaluate("/root/row" , root)
                                    row=[]
                                    for k in rows:
                                            if getAttr(k,"id","") ==  i[0:len(getAttr(k,"id",""))]:
                                                    row.append(k)
     
     
     
    			for j in row:
    				xmlrow = xmlout.createElement(getAttr(j, "name", "row"))	
    				xmltag.appendChild(xmlrow)
    				if fix:
                                            l = int(num)
                                    else:
                                            l = len(getAttr(j,"id",""))
                                    createElt(xmlout, xmlrow, j , i[l:], i[0:l])
     
    			if out == None:			
    				print xmlout.toxml()
    			else:
    				saveFile(out, xmlout.toxml())	
     
    	except Exception, e:
    		print "Error ", e 
     
     
     
     
     
    if __name__ == "__main__":
    	#convert(flat = "/home/fraoustin/MyProject/XML/flat_to_xml/flat_to_xml_fix.txt",xml = "/home/fraoustin/MyProject/XML/flat_to_xml/flat_to_xml_fix.xml",out = "/home/fraoustin/MyProject/XML/flat_to_xml/out.xml")
    	try:
    		i, d, o = None, None, None
            	opts, args = getopt.getopt(sys.argv[1:], "hvi:d:o:", ["help"])
    		if len(opts) == 0:
    			usage()
    			sys.exit()
        		for opt, arg in opts:
                		if opt in ("-h", "--help"):
                			usage()                     
                			sys.exit()        
                		if opt in ("-v"):      
                			version()                     
                			sys.exit()
                		if opt in ("-i"): 
    				i = arg        
                		if opt in ("-o"): 
    				o = arg        
                		if opt in ("-d"): 
    				d = arg
    		if i != None and d != None:
    			convert(flat=i, xml=d, out=o)
    		else:
    			print "Error in parameters"
    			usage() 
     
        	except getopt.GetoptError, r:
            	print "Error", r
            	usage()
     
        	except Exception,e:
            	print e
    un fichier plat d'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id111222333344444
    id2aabbbddddeeeff
    id3aaaaaaaaabbbbb
    id3aaaaaaaaaddddd
    id3aaaaaaaaaeeeee
    id3fffffffffbbbbb
    id2aabbbccddeeeff
    un fichier xml qui décrit la structure
    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
    <?xml version="1.0" ?>
    <root num="3" name="racine">
    	<row id="id1" name="fred">
    		<attr min="0" max="2">id</attr>
    		<element min="0" max="2"><attr min="0" max="2">elt1</attr>elt1</element>
    		<element min="2" max="5">elt2</element>
    		<element min="5" max="9">elt3</element>
    		<element min="9" max="">elt4</element>
    		<row name="essai">
    			<element min="0" max="2">elt1</element>
    			<element min="2" max="5">elt2</element>
    			<element min="5" max="9">elt3</element>
    			<element min="9" max="">elt4</element>
    		</row>
    	</row>
    	<row id="id2" name="rows">
    		<attr fix="tutu">id</attr>
    		<element min="0" max="2">elt1</element>
    		<element min="2" max="5">elt2</element>
    		<element min="5" max="9">elt3</element>
    		<element min="9" max="12">elt4</element>
    		<element min="12" max="">elt5</element>
    	</row>
    	<row id="id3">
    		<attr param="id">id</attr>
    		<element min="0" max="9">elt11</element>
    		<element min="9" max="">elt2</element>
    		<element min="" max="">all</element>
    	</row>
    </root>
    et le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" ?>
    <racine><row><elt1>11</elt1><elt2>222</elt2><elt3>3333</elt3><elt4>44444</elt4></row><row><all>111222333344444</all></row><row><elt1>aa</elt1><elt2>bbb</elt2><elt3>dddd</elt3><elt4>eee</elt4><elt5>ff</elt5></row><row><all>2aabbbddddeeeff</all></row><row><elt11>aaaaaaaaa</elt11><elt2>bbbbb</elt2><all>aaaaaaaaabbbbb</all></row><row><all>3aaaaaaaaabbbbb</all></row><row><elt11>aaaaaaaaa</elt11><elt2>ddddd</elt2><all>aaaaaaaaaddddd</all></row><row><all>3aaaaaaaaaddddd</all></row><row><elt11>aaaaaaaaa</elt11><elt2>eeeee</elt2><all>aaaaaaaaaeeeee</all></row><row><all>3aaaaaaaaaeeeee</all></row><row><elt11>fffffffff</elt11><elt2>bbbbb</elt2><all>fffffffffbbbbb</all></row><row><all>3fffffffffbbbbb</all></row><row><elt1>aa</elt1><elt2>bbb</elt2><elt3>ccdd</elt3><elt4>eee</elt4><elt5>ff</elt5></row><row><all>2aabbbccddeeeff</all></row></racine>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut merci
    merci

    je vais étudier le code et je vous tiendrais au courent de l'évolution de mon travail.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut Encore un peut d'aide
    Bonjour

    Je vous serai très reconnaissante si vous pouviez m'indiquer une documentation appropriée pour pouvoir déchiffrer le code en python que vous m'avez envoyé.

    Merci

  7. #7
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Comment se présente vos fichier texte ?
    Pouvons nous avoir un exemple ?
    En quel langage voulez vous coder ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut Réponse
    Bonjour

    L’exemple que vous me demandez est le suivant:

    fr 001 duboss marine 18 f
    an 002 tato fred 20 h
    sp 003 faro kholio 21 h

    Je veux programmer en java.

    Le programme proposé en python est intéressant mais je trouve des difficultés pour le comprendre et la doc dont j'ai besoin semble introuvable.

    J’ai juste envi de comprendre quelques instructions.
    J’en profit aussi pour vous demander vers de m’orienter vers les apis dont j’ai besoin.

    Merci de votre intérêt pour ma question

  9. #9
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Salut !

    Si j'ai bien compris, t'aimerai utilisé le XML pour présenter les informations de ton fichier donné en exmple ... !

    Passé de ça :
    Citation Envoyé par jasminrose
    fr 001 duboss marine 18 f
    an 002 tato fred 20 h
    sp 003 faro kholio 21 h
    à ça :
    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
     
    <fichier>
      <nouvelle_entree id="001">
        <langue>fr</langue>
        <nom>duboss</nom>
        <prenom>marine</prenom>
        <age>18</age>
        <sexe>f</sexe>
      </nouvelle_entree>
      <nouvelle_entree id="002">
        <langue>en</langue>
        <nom>tato</nom>
        <prenom>fred</prenom>
        <age>20</age>
        <sexe>h</sexe>
      ...
      </nouvelle_entree>
    </fichier>
    Ceci n'étant qu''un exemple !

    Pour ce faire, il suffit de lire ligne par ligne ton fichier plat, d'en extraire les informations (apparemment toutes séparées par un espace) et de les réecrire dans un nouveau fichier selon la nouvelle "mise en page" XML ...

    Pour ce qui est des parsers (pour la relecture, car l'écriture je le ferai simplement moi-même ...), je n'en connais aucun en Java, mais tu devrais trouver ton bonheur ici !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut merci
    Bonjour

    Merci pour votre aide.

    Voila j'ai résolu mon problème entre temps en suivent la méthode que vous venez d'expliquer.

    Mais bien sur j'ai rencontré un autre problème.
    je n'arrive qu'a lire une seul ligne de mon fichier txt .
    donc je ne reussi qu'a creer un seul fils du noeud reacine.

    j'ai utilisé les "subString "pour récuperer mes informations

  11. #11
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Un ptit bout de ton code aiderai quelque peu ...

    Tu utilises quoi pour lire ton fichier, une boucle ... ? Tu ne fais qu'une seule fois la lecture de ta ligne ... ?
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Code java : 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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    import javax.xml.parsers.*; 
    import org.w3c.dom.*; 
    import org.xml.sax.*; 
    import javax.xml.transform.*; 
    import javax.xml.transform.dom.*; 
    import javax.xml.transform.stream.*; 
    import java.io.*; 
     
    public class CreationDOM{
    	public static void transformerXml(Document document, String fichier) {
            try {
                // Création de la source DOM
                Source source = new DOMSource(document);
     
                // Création du fichier de sortie
                File file = new File(fichier);
                Result resultat = new StreamResult(fichier);
     
                // Configuration du transformer
                TransformerFactory fabrique = TransformerFactory.newInstance();
                Transformer transformer = fabrique.newTransformer();
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
     
                // Transformation
                transformer.transform(source, resultat);
            }catch(Exception e){
            	e.printStackTrace();	
            }
        }
     
     
    		public static void main(String[] args){
     
     
    		 String ligne,chaine,f;
     
     
      try {
    		BufferedReader in = new BufferedReader(new FileReader("Fichier.txt"));
     
     
       while ( (f = in.readLine()) != null)
        {
        	try{
    			// Création d'un nouveau DOM
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
    			Document document = constructeur.newDocument();
     
     
     
    			// Propriétés du DOM
    			document.setXmlVersion("1.0");
    			document.setXmlStandalone(true);
     
    			// Création de l'arborescence du DOM
    			Element personne = document.createElement("personne");
     
     
    			Element nom = document.createElement("nom");
    			nom.setAttribute("nom",f.substring(0,19));
    			personne.appendChild(nom);
     
    			Element prenom = document.createElement("prenom");
    			prenom.setAttribute("nom",f.substring(19,39));
    			personne.appendChild(prenom);
     
    			Element adresse = document.createElement("adresse");
    			adresse.setAttribute("nom",f.substring(39,69));
    			personne.appendChild(adresse);
     
     
    			Element sex = document.createElement("sex");
    			sex.setAttribute("nom",f.substring(69,70));
    			personne.appendChild(sex);
     
     
     
     
    			document.appendChild(personne);
     
    			//Sauvegarde du DOM dans un fichier XML
    			transformerXml(document, "./exemple.xml");
    				}
    		catch(Exception e){
    			e.printStackTrace();
    		}
     
    		}
    		in.close();
    	}
    	 catch (Exception e) {
       System.out.println(e.toString());
      }	
     
    }
    }
    Désoler de vous l'envoyer comme ça mais je ne sais pas comment vous l'écrire dans un cadre

    je n'arrive pas a ecrir les trois lignes de mon fichier txt que je vous donne

    jasmin rose france c
    madline toto almagne m
    papa mama algerie c
    les champs ont la longueur suivente: 20;20;40;1

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Bonjour

    Alors les amis developpeurs y a personne pour m'aider

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Salut,
    Je proposer une autre approche à laquelle je pense car je travaille bcp avec le framework Cocoon en ce moment.
    Je traiterais le pb en 2 temps:
    - transformer le fichier plat en xml simpliste avec un noeud par ligne.
    - utiliser le xslt pour extraire les données.

    Ca aurait l'avantage de découpler l'extraction (et donc implicitement la déclaration de la structure du fichier que tu traites) du programme java.
    Ca rend le programme java générique et permet d'adapter le traitement à de futurs formats de ficher plat en entrée en créant simplement de multiple fichiers xslt.

    Tu peux regarder l'example de l'email dans http://jsn-server5.com/cocoon/sample...s/slop/welcome qui correspond à ce que la premiere passe devrait faire.
    --------------------------------

    Sinon, en regardant ton programme, je vois que tu fais le:
    //Sauvegarde du DOM dans un fichier XML
    transformerXml(document, "./exemple.xml");

    Dans la boucle while qui lis les ligne, donc à chaque ligne le fichier xml est écrasé.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut aidez moi
    ça aurait l'avantage de découpler l'extraction (et donc implicitement la déclaration de la structure du fichier que tu traites) du programme java.

    Pardon je n'ai pas bien compris cette phrase

    Et puis est ce qu'il me serait plus simple de transformer mes fichiers plats en fichiers xml ensuite extraire les données pour construire mon fichier xml dont j'ai besoin

    Ou plutot extraire les données de mes fichier plats, les stocker dans un fichier temporaire ensuite construire mon fichier xml

    La seconde solutions me pose des problèmes par contre la première proposée je ne l'ai pas utilisé.

    Puis je avoir votre avis

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    et puis a quel niveau intervient le xslt et comment puis je en profiter

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Brièvement le xslt est la norme de transformation de fichier xml définie par le w3c. Le xslt utilise un fichier xml (.xsl le plus souvent) qui définit la transformation qu'on souhaite appliquer à un fichier xml et un moteur XSLT (programme qui va utiliser le fichier .xml source et le .xsl pour produire une sortie en xml le plus souvent).
    La plupart des navigateur intègrent un moteur xslt ce qui leur permet d'afficher une page html a partir d'un fichier xml et xsl.
    En java le moteur xalan est très répandu.
    Une intro au xslt: http://haypo.developpez.com/tutoriel/xml/xslt/

    Si tu es néophyte en xslt et que tu es pressé d'avoir un résultat, peut être restes en au programme java.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Je vais poser alors une autre question

    comment utiliser xslt pour transformer un fichier plat en fichier xml.
    moi j'ai utilise dom pour effectuer cette ransformation

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Points : 75
    Points
    75
    Par défaut répondez vite s'il vous plait
    et puis j'ai meme une autre question qui me traverse l'esprit
    est ce que si je transforme mes fichiers plat en fichier xml
    ensuite j'utilise un xslt pour formater le document xml dont j'ai besoin

  20. #20
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Le xlst ne manipule que du xml en entrée.
    Tu peux garder ton programme java pour créer un fichier xml générique du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0"?>
    <fichier>
    <ligne id="1">fr 001 duboss marine 18 f</ligne>
    <ligne id="2">an 002 tato fred 20 h</ligne>
    <ligne id="3">sp 003 faro kholio 21 h</ligne>
    ...
    </fichier>
    Et apres laisser un ficher xsl définir les portions à extraire:
    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
    <xsl:stylesheet version = '1.0'
         xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:output method = "xml"  version="1.0" encoding="UTF-8" omit-xml-declaration="no" standalone="no" indent="yes"  />
     
    <xsl:template match="/">
         <peoples>
     
                    <xsl:apply-templates select = "//ligne" />
     
         </peoples>
    </xsl:template>
     
    <xsl:template match="ligne">
    	<people>
    		<xsl:variable name="param1" select="substring-before(.,' ')"/>
    		<xsl:variable name="param2" select="substring-before(substring-after(.,concat($param1,' ')),' ')"/>
    		<xsl:variable name="nom" select="substring-before(substring-after(.,concat($param2,' ')),' ')"/>
    		<xsl:variable name="prenom" select="substring-before(substring-after(.,concat($nom,' ')),' ')"/>
    		<xsl:variable name="age" select="substring-before(substring-after(.,concat($prenom,' ')),' ')"/>
    		<xsl:variable name="sexe" select="substring-after(.,concat($age,' '))"/>
     
    		<xsl:attribute  name="param1" ><xsl:value-of select="$param1"/></xsl:attribute>
    		<xsl:attribute  name="param2" ><xsl:value-of select="$param2"/></xsl:attribute>
    		<xsl:attribute  name="nom" ><xsl:value-of select="$nom"/></xsl:attribute>
    		<xsl:attribute  name="prenom" ><xsl:value-of select="$prenom"/></xsl:attribute>
    		<xsl:attribute  name="age" ><xsl:value-of select="$age"/></xsl:attribute>
    		<xsl:attribute  name="sexe" ><xsl:value-of select="$sexe"/></xsl:attribute>
    	</people>
    </xsl:template>
     
     
    </xsl:stylesheet>
    Ce qui donnera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <peoples>
    <people param1="fr" param2="001" nom="duboss" prenom="marine" age="18" sexe="f" />
    <people param1="an" param2="002" nom="tato" prenom="fred" age="20" sexe="h" />
    <people param1="sp" param2="003" nom="faro" prenom="kholio" age="21" sexe="h" />
    </peoples>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Fichier Excel vers XML
    Par rolandl dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 01/11/2012, 18h09
  2. XSLT - Transformation fichier plat en XML hiérarchisé
    Par AlfMan34 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/02/2010, 11h07
  3. Exporter fichier Excel vers XML
    Par ferrero dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 11/05/2009, 18h01
  4. transformation fichier log vers XML
    Par natacha79 dans le forum Logging
    Réponses: 2
    Dernier message: 09/06/2006, 13h07
  5. Importation fichier plat vers Mysql
    Par xender dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/05/2006, 22h36

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