Bonjour,
Etudiant en informatique j'ai un exercice à réaliser sur XML et JDOM. A partir de mon schéma XML je dois proposer 3 exemples de fichiers XML de commandes avec plusieurs lignes. Tout d'abord j'aurais voulu savoir si mes fichiers sont correct avec mon XML Schéma.
Ensuite je dois écrire un programme JAVA qui utilise la libraire JDOM pour manipuler mes fichiers XML. Mon but etant de lire les 3 fichiers et de tirer le bilan suivant :
- Dates de la période du bialn en fonction des fichiers de commande (du ... au ..)
- Liste des produits vendus avec prix unitaire et quantité ainsi que liste des clients (reference, nom , prénom).
- Chiffre d'affaire de l'entreprise.
Je dois obtenir ce resultat à l'aide de JAVA et la librairie JDOM et avoir ceci en sortie dans un fichier XML sous la forme schéma XML. lol !!
Je suis bloqué au programme JAVA voici tout mes fichiers que j'utilise
Fichier XML (je vous en met un seul) :
Fichier XML Schéma :
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 <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!-- TD1 Exercice 2 XML --> <!DOCTYPE Commande SYSTEM "dtd.dtd"> <Commande numClient="I-53-071105-012345"> <Coord refClient="DUPO-53-123" typeClient="net"> <nom>Dupont</nom> <prenom>Alfred</prenom> <sociale>Artisan</sociale> <adresse>50 avenue ****</adresse> <codepost>53000</codepost> <ville>Laval</ville> <pays>France</pays> <tel type="fixe">02********</tel> <mail>alfred.dupond@exemple.com</mail> </Coord> <numCommande>1-01-123456-000001</numCommande> <date type="commande">071106</date> <date type="livraison">071223</date> <total type="HT">220</total> <total type="TTC">260</total> <lignecommande numero="1"> <reference>001-ABCDEF</reference> <designation>Produit 1</designation> <prix type="HT">85</prix> <quantite>1</quantite> <prix type="TTC">100</prix> </lignecommande> <lignecommande numero="2"> <reference>002-ABCDEF</reference> <designation>Produit 2</designation> <prix type="HT">45</prix> <quantite>2</quantite> <prix type="TTC">50</prix> </lignecommande> <lignecommande numero="3"> <reference>003-ABCDEF</reference> <designation>Produit 3</designation> <prix type="HT">15</prix> <quantite>3</quantite> <prix type="TTC">20</prix> </lignecommande> </Commande>
Fichier JAVA :
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 <!-- TD1 Exercice 2 XML Schéma --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.commande.org" xmlns="http://www.commande.org" elementFormDefault="qualified" > <xsd:element name="Commande"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Coord" ref="Commande"/> <xsd:element name="date" ref="Commande" minOccurs="1"/> <xsd:element name="total" ref="Commande" minOccurs="1"/> <xsd:element name="lignecommande" ref="Commande" minOccurs="1"/> <xsd:element name="nom" ref="Coord" type="xsd:string"/> <xsd:element name="prenom" ref="Coord" type="xsd:string"/> <xsd:element name="sociale" ref="Coord" type="xsd:string"/> <xsd:element name="adresse" ref="Coord" type="xsd:string"/> <xsd:element name="codepost" ref="Coord" type="xsd:positiveInteger"/> <xsd:element name="ville" ref="Coord" type="xsd:string"/> <xsd:element name="pays" ref="Coord" type="xsd:string"/> <xsd:element name="tel" ref="Coord" type="tel" minOccurs="1"/> <xsd:element name="mail" ref="Coord" type="mail"/> <xsd:attribute name="tel" default="fixe"> <xsd:simpleType name="tel"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="fax"/> <xsd:enumeration value="mobile"/> <xsd:enumeration value="fixe"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:element name="mail" type="mail"/> <xsd:simpleType name="mail"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z0-9]([a-zA-Z0-9_.]+)/@[a-zA-Z0-9]([a-zA-Z0-9_.-]+)/.[a-zA-Z]{2,4}" /> </xsd:restriction> </xsd:simpleType> <xsd:element name="typeClient" type="typeClient" ref="Commande"/> <xsd:simpleType name="typeClient"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="net"/> <xsd:enumeration value="tel"/> <xsd:enumeration value="courrier"/> <xsd:enumeration value="agence"/> <xsd:enumeration value="mail"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="numCommande" type="numCommande" ref="Commande"/> <xsd:simpleType name="numCommande"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z0-9]{1}/-[0-9]{2}/-[0-9]{6}/-[0.0-9.0]{6}"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="refClient" type="refClient" ref="Commande"/> <xsd:simpleType name="refClient"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z0-9]{4}/-[0-9]{2}/-[0.0-9.0]{3}"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="date"> <xsd:restriction base="xsd:dateTime"> <xsd:enumeration value="commande"/> <xsd:enumeration value="livraison"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="total"> <xsd:restriction base="xsd:positiveInteger"> <xsd:enumeration value="HT"/> <xsd:enumeration value="TTC"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="reference" ref="lignecommande"/> <xsd:element name="designation" ref="lignecommande"/> <xsd:element name="prix" ref="lignecommande" minOccurs="1"/> <xsd:simpleType name="reference"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{3}/-[a-zA-z0-9]{6}"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="total"> <xsd:restriction base="xsd:positiveInteger"> <xsd:enumeration value="HT"/> <xsd:enumeration value="TTC"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="prixType" type="prixType" ref="lignecommande"/> <xsd:simpleType name="prixType"> <xsd:restriction base="xsd:int"> <xsd:enumeration value="unitaire HT"/> <xsd:enumeration value="total TTC"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="quantite" ref="lignecommande"/> <xsd:element name="numCommande" type="numCommande" ref="Commande"/> </xsd:schema>
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 import java.io.*; import org.jdom.*; import org.jdom.input.*; import org.jdom.filter.*; import java.util.List; import java.util.Iterator; public class Maclasse { static org.jdom.Document document; static Element racine; public static void main(String[] args) { //L'on crée un instance du parseur SAXBuilder SAXBuilder sxb = new SAXBuilder(); try { //L'on crée un nouveau document JDOM avec en argumant le fichier XML //Le parsing est terminé ;) document = sxb.build(new File("XML1.xml")); } catch(Exception e){} //L'on initialise un nouvel element racine avec l'element racine du document. racine = document.getRootElement(); //Méthode définie dans la partie 3.1. de cet article afficheALL(); } // Ajouter cette méthodes à la classe JDOM2 static void afficheALL() { //L'on crée une list contenant tous les noeud "etudiant" de l'Element racine List listEtudiants = racine.getChildren("Commande"); //L'on crée un iterator sur notre liste (sorte d'index) Iterator i = listEtudiants.iterator(); while(i.hasNext()) { //L'on recrée l'Element courant à chaque tour de boucle afin de //pouvoir utiliser les méthodes propres aux Element comme: //selectionner un noeud fils, modifier du text, etc... Element courant = (Element)i.next(); //On affiche le nom de l'element courant System.out.println(courant.getChild("Coord").getText()); } } }
Partager