Bonjour à tous,
J'ai à ma charge de générer un arbre à partir d'un fichier xml je cherche une Api qui permet de faire ça en java bien sur
Merci d'avance
Bonjour à tous,
J'ai à ma charge de générer un arbre à partir d'un fichier xml je cherche une Api qui permet de faire ça en java bien sur
Merci d'avance
Bonjour,
un arbre comment, un résineux, à feuilles caduques, pas caduques, qui donne des fruits... ?
Il faudrait être un peu plus précis que cela.
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
Ok,
En fait moi j'ai un fichier xml comme ça par exemple :
à partir de ce fichier je vais pouvoir créer un arbre comme :
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" ?> - <organisation edition="Organisation de la fiche technique"> - <niveau id="" libelle="Identification véhicule"> <niveau id="" libelle="Plaques constructeur" codesource="FT01" /> <niveau id="" libelle="Code peinture" codesource="FT02" /> <niveau id="" libelle="Points de levage" codesource="FT03" /> <niveau id="" libelle="Points de remorquage" codesource="FT42" /> </niveau> - <niveau id="" libelle="Moteur"> <niveau id="" libelle="Généralités" codesource="FT04" /> <niveau id="" libelle="Lubrifiants" codesource="FT05" /> <niveau id="" libelle="Culasse" codesource="FT06" /> <niveau id="" libelle="Courroies" codesource="FT07" /> <niveau id="" libelle="Couples de serrage" codesource="FT43" /> <niveau id="" libelle="Bougies" codesource="FT08" /> </niveau> <niveau id="" libelle="Gestion moteur" codesource="FT09" /> <niveau id="" libelle="Equipement électrique" codesource="FT10" /> - <niveau id="" libelle="Suspension / géométrie des trains"> <niveau id="" libelle="Conditions de réglage" codesource="FT11" /> <niveau id="" libelle="Hauteur" codesource="FT12" /> <niveau id="" libelle="Géométrie avant" codesource="FT13" /> <niveau id="" libelle="Géométrie arrière" codesource="FT14" /> <niveau id="" libelle="Couples de serrage" codesource="FT15" /> </niveau> <niveau id="" libelle="Roues / pneus" codesource="FT16" /> - <niveau id="" libelle="Freinage"> <niveau id="" libelle="Généralités" codesource="FT17" /> <niveau id="" libelle="Frein de stationnement" codesource="FT18" /> <niveau id="" libelle="Freins avant (à disques ou tambours)" codesource="FT19" /> <niveau id="" libelle="Freins arrière (à disques ou tambours)" codesource="FT20" /> <niveau id="" libelle="ABS/ESP" codesource="FT21" /> <niveau id="" libelle="Couples de serrage" codesource="FT22" /> <niveau id="" libelle="Lubrifiants - ingrédients" codesource="FT23" /> </niveau> - <niveau id="" libelle="Climatisation"> <niveau id="" libelle="Implantation des valves" codesource="FT24" /> <niveau id="" libelle="Courroie compresseur" codesource="FT25" /> <niveau id="" libelle="Lubrifiants - ingrédients" codesource="FT26" /> </niveau> - <niveau id="" libelle="Lubrifiants - ingrédients"> <niveau id="" libelle="Moteur (E ou D)" codesource="FT27" /> <niveau id="" libelle="BV (M ou A)" codesource="FT28" /> <niveau id="" libelle="Transmission" codesource="FT29" /> <niveau id="" libelle="Embrayage" codesource="FT30" /> <niveau id="" libelle="Direction" codesource="FT31" /> <niveau id="" libelle="Suspension" codesource="FT32" /> <niveau id="" libelle="Climatisation" codesource="FT33" /> <niveau id="" libelle="Freinage" codesource="FT34" /> </niveau> - <niveau id="" libelle="Couples de serrage"> <niveau id="" libelle="Roues" codesource="FT35" /> <niveau id="" libelle="Freins" codesource="FT36" /> <niveau id="" libelle="Suspension" codesource="FT37" /> <niveau id="" libelle="Transmission" codesource="FT38" /> <niveau id="" libelle="Moteur (E ou D)" codesource="FT39" /> <niveau id="" libelle="Direction" codesource="FT40" /> <niveau id="" libelle="Airbag" codesource="FT41" /> </niveau> </organisation>
-Organisation de la fiche technique
-Identification véhicule
-Plaques constructeur
-Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-Xxxxxxxxxxxxxxxxxxxxxxxxx
voilà une idée sur l'arbre à créer
pourrais tu nous donner un exemple de fichier d'entrée (bon à priori on en a un) et un de sortie, car ton fichier d'entrée est déjà un arbre pour moi
Le fichier de sortie est un arbre construite avec Xquery et xPath, je te file le fichier .xqy
et voici la page jsp qui encapsulera le fichier et fait la transformation du fichier à un arbre :
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 (: ********************** Construction du tree ************************:) (: External variables:) declare variable $skeleton_file external; declare variable $file external; declare variable $evo_file external; declare variable $variante_id external; (: Fonction qui genere le contenu XML pour le tree :) declare function local:generate ( $codesource as xs:string?, $libelle as xs:string, $file as xs:string) as element()* { for $chapter in doc($file)/DOCUMENT/VARIANTE[@grvcod=$variante_id]/CHAPTER let $code := data($chapter/@code) return if($codesource = "") then <node text="{$libelle}"/> else if ( $codesource = $code ) then <node text="{$libelle}" id="{$codesource}"/> else () }; (: Fonction recursive qui permet de pendre en compte les niveaux sans codesource :) declare function local:recurse ( $niveau as element(niveau)) as element()* { <node leaf="true" text="{data($niveau/@libelle)}"> { for $subniveau in $niveau/niveau let $codesource := data($subniveau/@codesource) return if(string-length($codesource) = 0) then local:recurse($subniveau) else let $libelle := data($subniveau/@libelle) return local:search($codesource,$libelle) } </node> }; (: Fonction qui permet de lancer la recherche des sources sur le fichier de base ainsi que celui des evolutions:) declare function local:search ( $codesource as xs:string, $libelle as xs:string) as element()* { let $res := local:generate($codesource,$libelle,$file) return $res }; (: Main :) <nodes> { for $niveau in doc($skeleton_file)/organisation/niveau let $codesource := data($niveau/@codesource) let $libelle := data($niveau/@libelle) (: Si le niveau est un niveau sans codesource:) return if(string-length($codesource) = 0) then local:recurse($niveau) else local:search($codesource,$libelle) } </nodes>
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 <?xml version="1.0" encoding="utf-8"?> <html:html > <head > <title><fmt:message key="fiche.technique.title"/></title> <!-- CSS --> <link rel="stylesheet" type="text/css" href="<c:url value='/scripts/ext-2.2/resources/css/ext-all.css'/>" /> <script language="JavaScript"> <!-- // // Extend the XmlTreeLoader to set some custom TreeNode attributes specific to our application: // Ext.app.BookLoader = Ext.extend(Ext.ux.XmlTreeLoader, { processAttributes : function(attr){ attr.loaded = true; } }); Ext.onReady(function(){ var contentPanel = new Ext.Panel({ id: 'content-panel', renderTo: 'panel', title: '<fmt:message key="consult.main.title"/>', width: 700, height: 500, html: '<div id="source_content"/>' }); // Go ahead and create the TreePanel now so that we can use it below var treePanel = new Ext.tree.TreePanel({ renderTo: 'tree', id: 'tree-panel', title: '<fmt:message key="consult.tree.title"/>', width: 250, height: 500, autoScroll: true, // tree-specific configs: rootVisible: false, lines: false, singleExpand: true, useArrows: true, // Our custom TreeLoader: loader: new Ext.app.BookLoader({ dataUrl:'<c:url value="/xml/tree/ft.html"/>', //HARD-CODED variante, uniquement pour les tests , a raccorder avec ident baseParams: { variante_id:'<bean:write name="varianteId" scope="session"/>', method:'tree'} // custom http params }), root: new Ext.tree.AsyncTreeNode() }); //To be called on tree node click. treePanel.on('click', function(n){ if(n.leaf != 'true'){ // ignore clicks on folders and currently selected node new Ajax.Updater('source_content', '/xml/tree/ft.html', { parameters: { method: 'select', theme:'n.id', variante_id: '39573' } }); } }); //end on ready }); // --> </script> </head> <body> <div id="bleu"> <bean:message key="your.selection.text"/> </div> <div id="img"> <img src='<bean:write name="varianteImgPath" scope="session"/>' width="114.25px"></img> </div> <div id="bleu"> <bean:write name="varianteImgLabel" scope="session"/> </div> <table> <tr> <td> <div id="tree"></div> </td> <td> <div id="panel"></div> </td> </tr> </table> </body> </html:html>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager