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 :

Parser un fichier xml avec Java [JDOM]


Sujet :

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

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par d�faut Parser un fichier xml avec Java
    Bonjour tout le monde,

    Je suis nouveau sur le forum et d�butant dans la programmation java /J2EE. mon probl�me c'est que je n'arrive pas � lire le contenu d'un fichier xml dans premier temp et le modifier dans un deuxi�me temps avec l'API JDOM.

    voici un extrait du fichier que voudrais parcourir:

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Created by JWS2SBML on 2008/05/26 09:12:19-->
    <sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
     <model name="curien">
      <listOfCompartments>
        <compartment id="compartment" name="compartment" size="1"/>
      </listOfCompartments>
      <listOfSpecies>
        <species id="Hser" name="Hser" compartment="compartment" initialConcentration="0" boundaryCondition="true" constant="true"/>
        <species id="Phser" name="Phser" compartment="compartment" initialConcentration="0"/>
        <species id="Cys" name="Cys" compartment="compartment" initialConcentration="15" boundaryCondition="true" constant="true"/>
        <species id="Cystathionine" name="Cystathionine" compartment="compartment" initialConcentration="0" boundaryCondition="true" constant="true"/>
        <species id="Phi" name="Phi" compartment="compartment" initialConcentration="10000" boundaryCondition="true" constant="true"/>
        <species id="Thr" name="Thr" compartment="compartment" initialConcentration="0" boundaryCondition="true" constant="true"/>
      </listOfSpecies>
      <listOfParameters>
        <parameter id="V1" name="V1" value="1"/>
        <parameter id="kcat2" name="kcat2" value="30"/>
        <parameter id="KmCYS" name="KmCYS" value="460"/>
        <parameter id="KmPHSER" name="KmPHSER" value="2500"/>
        <parameter id="Ki2" name="Ki2" value="2000"/>
        <parameter id="Ki3" name="Ki3" value="1000"/>
        <parameter id="CGS" name="CGS" value="0.7"/>
        <parameter id="TS" name="TS" value="5"/>
        <parameter id="AdoMet" name="AdoMet" value="20"/>
      </listOfParameters>
    </model>
    </sbml>

    et voici le code que j'utilise :

    SAXBuilder saxBuilder = new SAXBuilder();//construire un Objet SAXBuilder

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Document doc = saxBuilder.build(new File(browsejTxtFld.getText()));
                    System.out.println("path = " + browsejTxtFld.getText());
     
                    Element sbml = doc.getRootElement();
                    Element model = sbml.getChild("model");
                    List species = model.getChildren("listOfSpecies");
                    Iterator sepciesIt = species.iterator();
     
                    while(sepciesIt.hasNext())
                    {
                       Element spece = (Element)sepciesIt.next();
                       System.out.println(spece.getChild("species").getValue());
     
                    }


    Merci de toute vos r�ponse

  2. #2
    Membre �clair�
    Inscrit en
    Juin 2006
    Messages
    570
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par d�faut
    Bonjour et welcom ^^
    Deux trois choses pour que l'on puisse t'aider :
    Penser � utiliser les balise [code] pour que ton code soit lisible.
    Et pr�cise nous exactement ton probl�me, car "je n'y arrive pas" ne nous aide pas vraiment. Ca plante, les r�sultats ne sont pas ceux escompt� ou autre ?

  3. #3
    Membre confirm� Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par d�faut
    Salut selyousfi,
    Moi pour lire mes fichier XML j'ai utilis� un code avec DocumentBuilderFactory ui ressemble a, c'est d'ailleurs un membre de du forum qui m'a aid� avec ce code:
    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
     
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
     
    public class ReadXml {
    	public static void main(String[] args) {
     
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = null;
    		Document doc = null;
    		Element racine = null;
    		NodeList nodeList = null;
    		try {
    			builder = factory.newDocumentBuilder();
    			doc = builder.parse("fichier.xml");
    			racine = doc.getDocumentElement();
    			nodeList = racine.getElementsByTagName("file");
    			for (int i = 0; i < nodeList.getLength(); i++) {
    				Element e = (Element)nodeList.item(i);
    				System.out.println(e.getAttribute("Name"));
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Sachant le fichier XML est du genre: <file Name="NomDeFichier"></file> pour te pr�ciser c'est quoi file et Name
    Apr�s pour modifier le contenu de ton fichier XML... je ne sais pas trop comment faire.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par d�faut
    Merci blackhock pour ta r�ponse,
    Toi tu parcours ton fichier en utilisant le Parser Dom, alors que moi je voudrais utiliser Parser JDOM. Certe Jdom est � peu pr�s la m�me chose sauf il utilise plus de featurs que DOM.

    Si quelqu'un pourrait me corrig� svp.

  5. #5
    Membre chevronn�
    Inscrit en
    Juillet 2006
    Messages
    534
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par d�faut
    Bonjour,

    Il faut utiliser le name space dans ton code comme ceci:

    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
    
      public void testJDom() {
    
        Document document = null;
        Namespace nameSpace = Namespace.getNamespace("xsi", "http://www.sbml.org/sbml/level2");
    
        SAXBuilder builder = new SAXBuilder();
        try {
          document = builder.build("fichier.xml");
    
          Element sbml = document.getRootElement();
          Element model = sbml.getChild("model", nameSpace);
          List species = model.getChildren("listOfSpecies", nameSpace);
    
          for (Object o : species) {
            List speciesList = ((Element)o).getChildren();
            // Liste species
            for (Object sp : speciesList) {
              List attributeList = ((Element)sp).getAttributes();
              for (Object attr : attributeList) {
                System.out.println(((Attribute)attr).getName() + " = " + ((Attribute)attr).getValue());
              }
              System.out.println();
            }
          }
        }
        catch(JDOMException e) {
          System.err.println(e.getMessage());
        }
        catch(IOException e) {
          System.err.println(e.getMessage());
        }
      }
    
    Ce programme d�pendra de ta structure du fichier xml.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par d�faut
    J'ai r�solu finalement mon probl�me, je vous fait part de mon code. :

    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
     
    public class Main {
      public static void main(String[] args) {
            try {
                //Lecture du fichier
                SAXBuilder parser = new SAXBuilder();
                Document doc = parser.build("test.xml");
     
                Element root = doc.getRootElement();// Retourn l'élément Root du document (Sbml dans notre exemple)
                //System.out.println("Root element : " + root);
     
                //Traitement du fichier
                List listOfModels = root.getChildren(); //Return la liste des modèles (1 seul model dans notre cas: model)
                //System.out.println("List of children of Root element : " + listOfModels);
     
                Iterator listOfModelsIt = listOfModels.iterator();// on définit un itérateur sur cette liste de modèles
     
                while( listOfModelsIt.hasNext())
                {
                    Element currentModel = (Element) listOfModelsIt.next();
                    List dataModel = currentModel.getChildren();// on appele les diffrents enfants du model courant dataModel
     
                    //Traitement compatments
                    //System.out.println("-- List Of Compartment --\n");
                    Element listOfCompartments = (Element) dataModel.get(0);
                    List listOflistOfCompartments = listOfCompartments.getChildren();
                    Iterator listOflistOfCompartmentsIt = listOflistOfCompartments.iterator();
                    while(listOflistOfCompartmentsIt.hasNext())
                    {
                        Element currentCompartment = (Element) listOflistOfCompartmentsIt.next();
                        currentCompartment.setAttribute("id", "compartment");
                        currentCompartment.setAttribute("name", "compartment");
                        //System.out.println(currentCompartment.getAttribute("name").getValue());
                    }
    Merci poiur votre participation
    A+

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    R�ponses: 3
    Dernier message: 18/05/2006, 21h24
  2. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Biblioth�ques et frameworks
    R�ponses: 7
    Dernier message: 05/04/2006, 12h25
  3. [XML] Comment parser ce fichier XML avec java !
    Par jlassira dans le forum Format d'�change (XML, JSON...)
    R�ponses: 7
    Dernier message: 13/03/2006, 12h56
  4. probl�me pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    R�ponses: 3
    Dernier message: 30/01/2006, 19h32
  5. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'�change (XML, JSON...)
    R�ponses: 1
    Dernier message: 10/02/2005, 17h12

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