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

XML/XSL et SOAP Discussion :

recuperer des données d'un fichier xml et les utiliser pour en créer un autre


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut recuperer des données d'un fichier xml et les utiliser pour en créer un autre
    Bonjour,
    help please je travaille sur un sujet de fin d'étude et je n'ai pas beaucoup de temps
    j'ai un fichier xml structuré comme suit:

    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
    <?xml version="1.0"?>
    <Schema name="geofoodmart">
    <Cube name="Sales">
     <Table name="sales_fact" />
     
      <!-- spatial store dimension -->
      <Dimension name="Store" foreignKey="store_id">
        <Hierarchy hasAll="true" primaryKey="store_id" primaryKeyTable="geostore_store">
          <Join leftKey="store_city_id_fk" rightKey="store_city_id"
            rightAlias="geostore_city">
            <Table name="geostore_store" />
            <Join leftKey="store_state_id_fk" rightKey="store_state_id"
              rightAlias="geostore_state">
              <Table name="geostore_city" />
              <Join leftKey="store_country_id_fk" rightKey="store_country_id">
                <Table name="geostore_state" />
                <Table name="geostore_country" />
              </Join>
            </Join>
          </Join>
          <Level name="Store Country" table="geostore_country" column="store_country_name"
            uniqueMembers="true">
    	<Property name="geom" column="store_country_geom" type="Geometry" />
          </Level>
          <Level name="Store State" table="geostore_state" column="store_state_name"
            uniqueMembers="true">
    	<Property name="geom" column="store_state_geom" type="Geometry" />
          </Level>
          <Level name="Store City" table="geostore_city" column="store_city_name"
            uniqueMembers="false">
    	<Property name="geom" column="store_city_geom" type="Geometry" />
          </Level>
          <Level name="Store Name" table="geostore_store" column="store_name"
            uniqueMembers="true">
            <Property name="Store Type" column="store_type"/>
            <Property name="Store Manager" column="store_manager"/>
            <Property name="Store Sqft" column="store_sqft" type="Numeric"/>
            <Property name="Street address" column="store_street_address" type="String"/>
          </Level>
        </Hierarchy>
      </Dimension>
    </Cube>
    </Schema>
    je réussi à récupérer le nom du noeud 'shema' et l'attribut 'name' ainsi que le child 'cube' et son attribut 'name', je voudrais utiliser ce noeud et ce child pour créer un autre fichier xml qui ne sera structuré comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <Schema name="geofoodmart">
    <Cube name="Sales">
    .
    .
    .
    .
    </Cube>
    </Schema>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Ben c'est un peu vague là quand même.
    T'es en train de nous dire que le fichier que tu veux créer doit être structuré... Exactement comme celui que tu as déjà -_-°. Pas facile à suivre.

    je réussi à récupérer le nom du noeud 'shema' et l'attribut 'name' ainsi que le child 'cube' et son attribut 'name'
    Ben la question qui se pose c'est comment tu réussis à récupérer ça. Avec quels outils, quelle technologie.
    On aura toujours des moyens de te dire comment créer un autre fichier avec dès qu'on saura ce que c'est.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    salut,
    voici comment j'ai récupérer le nom des balises et les attributs,
    et non mon fichier ne sera pas le même que celui qui existe déjà, le début seulement sera pareil.
    voici le code:

    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
    package pk;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
     
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    import org.jdom2.xpath.XPath;
     
     
    public class JDOM1 {
    	static org.jdom2.Document document;
    	static Element schema;
    	static Element cube;
    	static Element racine;
     
    	public static void main(String []args ){
    		SAXBuilder sxb = new SAXBuilder();
    	      try
    	      {/////////////////////////////////////////////////////////////////////////
    	    	 // récuperer les données a partir du schéma simple_geofoodmart
     
    	         document = sxb.build(new File("C:\\simple_geofoodmart.xml"));
    	         //recuperer la racine <schema> du fichier xml 
     
    	         schema=document.getRootElement();
    	         //recuperer le nom du schéma "nom de l'entrepot"
    	    	  String nom=schema.getAttributeValue("name");	    	  
    	    	  schema.setAttribute("name",nom);
    	    	  //recuperer les cubes de l'entrepot plus le nom de chaque cube
    	    	  cube=schema.getChild("Cube");
    	    	  String nom_cube=cube.getAttributeValue("name");	    	  
    	    	  cube.setAttribute("name",nom_cube);
    	    	  System.out.println("le nom du cube :"+nom_cube);
    	    	  System.out.println("le nom de schama :"+nom);
    	    	/////////////////////////////////////////////////////////////////////////:  
    	    	  //creation de notre fichier xml
     
    	      }
    	      catch(Exception e){	    	  
    	      }
    	}
    }

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    c'est encore moi
    c'est bon j'ai réussi à avoir le résultat que je voulais
    voici le code on sait jamais quelqu'un aura un jour le mm problème
    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
    package pk;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
     
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    import org.jdom2.xpath.XPath;
     
     
    public class JDOM1 {
    	static org.jdom2.Document document;
    	static Element schema;
    	static Element cube;
    	static Element racine;
     
    	public static void main(String []args ) throws JDOMException, IOException{
    		SAXBuilder sxb = new SAXBuilder();
    		 // récuperer les données a partir du schéma simple_geofoodmart
     
            document = sxb.build(new File("C:\\simple_geofoodmart.xml"));
            //recuperer la racine <schema> du fichier xml 
     
            schema=document.getRootElement();
            //recuperer le nom du schéma "nom de l'entrepot"
       	  String nom=schema.getAttributeValue("name");	    	  
       	  schema.setAttribute("name",nom);
       	  //recuperer les cubes de l'entrepot plus le nom de chaque cube
       	  cube=schema.getChild("Cube");
       	  String nom_cube=cube.getAttributeValue("name");	    	  
       	  cube.setAttribute("name",nom_cube);
       	  System.out.println("le nom du cube :"+nom_cube);
       	  System.out.println("le nom de schama :"+nom);
       	/////////////////////////////////////////////////////////////////////////:  
       	  //creation de notre fichier xml
       	  Element racine=new Element("schema");
       	  racine.setAttribute("name",nom);
     
       	  Element child=new Element("cube");
       	  child.setAttribute("name",nom_cube);
     
       	  racine.addContent(child);
       	  Document document = new Document(racine);
     	  XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
     
    	      try
    	      {/////////////////////////////////////////////////////////////////////////
    	    	  sortie.output(document, new FileOutputStream("D:\\diagramme2.xml"));
    	      }
    	      catch(Exception e){	    	  
    	      }
    	}
    }

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui enfin, concrètement ce que tu voulais, c'était juste faire un nouveau fichier, dans lequel tu as gardé seulement les éléments <Schema> et <Cube>, et où tout le reste a été enlevé.
    <Schema> étant la racine et <Cube> son unique fils.

    Dans ce cas, il n'y avait aucun besoin de reconstruire un nouveau Document, il suffisait d'enlever tout ce qu'on ne veut pas garder :

    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
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build("C:/simple_geofoodmart.xml"); // Pas besoin de File. Une String sera considéré comme une URI
                                                               // vers le fichier à charger. Et si l'URI n'indique pas autre chose,
                                                               // elle sera considérée comme relative au système de fichier.
    Element cube = doc.getRootElement().getChild("Cube");
     
    List<Content> content = cube.getContent(); // voir le contenu de <Cube> comme une List.
    content.clear();                           // vider cette List
     
    XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
     
    try(OutputStream os = new FileOutputStream("D:/diagramme2.xml")) {
      sortie.output(doc, os);
    }

    On notera également :
    - L'utilisation d'un try en ouvrant un fichier comme un FileOutputStream. Il faut toujours utiliser un try quand on ouvre un fichier ou une ressource, car c'est la seule manière de s'assurer qu'on va le fermer. Et il est indispensable de s'assurer qu'on va le fermer.
    Ici c'est un try-with-resource, qui va fermer automatiquement tout ce qu'on a ouvert entre try( ... ) quand on aura quitté le try() { ... }. C'est plus simple et plus sûr.

    - Qu'il n'y a pas de catch contre les IOException, parce que ça ne sert à rien. S'il y a erreur ça n'a pas marché et c'est tout, ça n'a pas d'intérêt de catcher l'erreur qui le dit.
    - Surtout, qu'il n'y a pas de catch vide. Un catch vide ne doit pas exister. En cas d'erreur avec un catch vide, personne ne sait qu'il y a eu une erreur et on ne peut pas chercher où ni pourquoi. Il ne faut pas le faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    merci pour tour
    à la prochaine question

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperer des données dans un fichier XML
    Par Thibault92 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/07/2011, 18h14
  2. [VB.NET] Recuperer des données ds un fichier
    Par Aspic dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/11/2005, 09h31
  3. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51
  4. Réponses: 3
    Dernier message: 13/12/2004, 13h54
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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