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 :

Problème avec le parse d'un fichier xml


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 20
    Points
    20
    Par défaut Problème avec le parse d'un fichier xml
    je suis entrain de parser ce fichier XML avec JDOM:
    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
     
    <?xml version="1.0" encoding="ASCII"?>
    <orm:entity-mappings xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" version="2.0">
      <orm:access>FIELD</orm:access>
      <orm:entity class="org.eclipse.emf.texo.test.model.samples.library.Book" name="Book">
        <orm:attributes>
          <orm:basic name="title" optional="true"/>
          <orm:basic name="pages" optional="true"/>
          <orm:basic name="category" optional="true"/>
          <orm:many-to-one name="author" optional="false" target-entity="org.eclipse.emf.texo.test.model.samples.library.Writer">
            <orm:cascade>
              <orm:cascade-persist/>
              <orm:cascade-merge/>
              <orm:cascade-refresh/>
            </orm:cascade>
          </orm:many-to-one>
        </orm:attributes>
      </orm:entity>
      <orm:entity class="org.eclipse.emf.texo.test.model.samples.library.Writer" name="Writer">
        <orm:attributes>
          <orm:basic name="name" optional="true"/>
          <orm:one-to-many name="books" target-entity="org.eclipse.emf.texo.test.model.samples.library.Book">
            <orm:order-column/>
            <orm:join-table name="Writer_books"/>
            <orm:cascade>
              <orm:cascade-persist/>
              <orm:cascade-merge/>
              <orm:cascade-refresh/>
            </orm:cascade>
          </orm:one-to-many>
        </orm:attributes>
      </orm:entity>
      <orm:entity class="org.eclipse.emf.texo.test.model.samples.library.Library" name="Library">
        <orm:attributes>
          <orm:basic name="name" optional="true"/>
          <orm:one-to-many name="writers" target-entity="org.eclipse.emf.texo.test.model.samples.library.Writer">
            <orm:order-column/>
            <orm:join-column/>
            <orm:cascade>
              <orm:cascade-all/>
            </orm:cascade>
          </orm:one-to-many>
          <orm:one-to-many name="books" target-entity="org.eclipse.emf.texo.test.model.samples.library.Book">
            <orm:order-column/>
            <orm:join-column/>
            <orm:cascade>
              <orm:cascade-all/>
            </orm:cascade>
          </orm:one-to-many>
        </orm:attributes>
      </orm:entity>
    </orm:entity-mappings>
    le fichier Java de Parse est:
    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
     
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
     
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
     
    public class Parseur {
     
    	public static void main(String[] args) throws Exception {
    		SAXBuilder sxb=new SAXBuilder();
     
     
    		Document document=sxb.build(new File("orm.xml"));
    		Element entity=document.getRootElement();//entity xml
     
    		List<Element>classes=entity.getChildren();
     
    		for(Element classe:classes){
     
    			String nom_classe=classe.getAttributeValue("name");
     
    			System.out.println(nom_classe);
    			List<Element> attributs=classe.getChildren();
    			for (Element attribut:attributs)
    			{
     
    				List<Element> sousattribs=attribut.getChildren();
    				for (Element sousattrib:sousattribs)
    				{
    				String nom=attribut.getAttributeValue("basic name");
                               // J'ai essayé aussi avec "name" au lieu de "basic name"
    					System.out.println(nom);
    				}
     
     
    			}
     
     
    		}
    	}
    }
    sauf que j'ai rencontré 2 problèmes:
    1/ J'arrive à voir les noms des classes qui sont ("Book, Writer,Library") mais avec en plus une valeur "null" que j'ai pas pu l'enlever.
    2/ Pour les noms des attributs de classe, ils prennent tous la valeurs "null".

    je suis vraiment bloqué dans cette étape.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par miled Voir le message
    sauf que j'ai rencontré 2 problèmes:
    1/ J'arrive à voir les noms des classes qui sont ("Book, Writer,Library") mais avec en plus une valeur "null" que j'ai pas pu l'enlever.
    Normal. En prenant tous les enfants, tu prends aussi la balise <orm:access>, qui n'a pas d'attribut name.

    Citation Envoyé par miled Voir le message
    2/ Pour les noms des attributs de classe, ils prennent tous la valeurs "null".
    Typo de ta part. C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sousattrib.getAttributeValue("name");
    qu'il fallait faire.

    Tout ça serait bien plus simple avec l'utilisation judicieuse de XPath. (Nécessite d'ajouter à JDOM la dépendance Jaxen.)

    Quelque chose du genre :

    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
    final Namespace ORM_NS = Namespace.getNamespace("orm", "http://java.sun.com/xml/ns/persistence/orm");
     
    XPath entitiesPath = XPath.newInstance("/orm:entity-mappings/orm:entity");
    entitiesPath.addNamespace(ORM_NS);
    XPath attribsPath = XPath.newInstance("orm:attributes/orm:basic");
    attribsPath.addNamespace(ORM_NS);
     
    List<Element> entities = entitiesPath.selectNodes(document);
    for(Element entity : entities) {
    	System.out.println(entity.getAttributeValue("name"));
     
    	List<Element> attribs = attribsPath.selectNodes(entity);
    	for(Element attrib : attribs) {
    		System.out.println(attrib.getAttributeValue("name"));
    	}
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 20
    Points
    20
    Par défaut jaxen
    Merci pour votre réponse;

    Je voulais savoir SVP est ce que ce code peut remplacer le mien? parce que j'ai ajouter le jar de Jaxen et j'ai mis votre code dans une nouvelle classe mais j'ai pas pu la complier.

    Merci de votre aide.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par miled Voir le message
    j'ai mis votre code dans une nouvelle classe mais j'ai pas pu la complier.
    Aucun problème chez moi, quelle est l'erreur ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 20
    Points
    20
    Par défaut IT's OK
    Merci beaucoup thelvin;

    C'est bon , ça marche.

    Et je voulais vous demander est ce que je peux maintenant créer un fichier java en utilisant ces éléments qui sont déjà été extraits de mon fichiers xml.

    Merci.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    ?

    En tout cas, moi ça ne me dérange pas que tu le fasses... Mais si tu as des autorisations à demander, je pense que ce n'est pas auprès de developpez.net.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    En tous cas je vous remercie beaucoup pour votre aide.
    Merci

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

Discussions similaires

  1. Problème avec saxbuilder.build d'un fichier xml
    Par jad_jad dans le forum Android
    Réponses: 0
    Dernier message: 26/11/2008, 16h47
  2. [XStream] problème avec la désérialisation d'un fichier xml
    Par sidoumghar dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 25/11/2008, 12h23
  3. probléme avec la lecture d'un fichier xml
    Par adel.87 dans le forum Débuter
    Réponses: 13
    Dernier message: 09/10/2008, 13h54
  4. problème avec .jar : lire depuis un fichier xml
    Par ALAE4000 dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 28/04/2008, 10h38
  5. Problème avec la taille d'un fichier xml
    Par ANISSS dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 26/01/2006, 17h11

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