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 :

XML et JDOM lire fichier XML


Sujet :

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

  1. #1
    Invité(e)
    Invité(e)
    Par défaut XML et JDOM lire fichier XML
    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) :
    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 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
    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>
    Fichier JAVA :
    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());
    	      }
    	   }
    }
    Dernière modification par mlny84 ; 13/05/2012 à 20h10. Motif: Ajout du préfixe

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    ouai j'ai bizarrement le meme soucis!

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2008, 13h38
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  4. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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