Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1909 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java] Parser un fichier XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] Parser un fichier XML

n°1301680
Profil sup​primé
Posté le 08-02-2006 à 21:48:57  answer
 

Bonjour!
J'aimerais parser ce fichier XML sous Java, j'utilise nanoXML, mais je suis prêt à utiliser d'autres bibliothèques si cette solution est plus simple.

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Permissions>
  3. <Permission id="1">
  4.  <Roles>
  5.   <id>1</id>
  6.   <id>2</id>
  7.   <id>3</id>
  8.  </Roles>
  9.  <Objets>
  10.   <id>101</id>
  11.   <id>102</id>
  12.   <id>103</id>
  13.  </Objets>
  14.  <Methodes>
  15.   <Methode id="1" idObjet="101">
  16.    <Composants>
  17.     <Composant Forme="Rectangle" Methode="Flou" Coeff="5" xDep="50" yDep="50" xFin="200" yFin="375"></Composant>
  18.     <Composant Forme="Rectangle" Methode="Flou" Coeff="5" xDep="350" yDep="70" xFin="500" yFin="300"></Composant>
  19.    </Composants>
  20.   </Methode>
  21.  </Methodes>
  22. </Permission>
  23. <Permission id="2">
  24.  <Roles>
  25.   <id>1</id>
  26.  </Roles>
  27.  <Objets>
  28.   <id>104</id>
  29.  </Objets>
  30.  <Methodes>
  31.   <Methode id="1" idObjet="104">
  32.    <Composants>
  33.     <Composant Forme="Rectangle" Methode="Flou" Coeff="5" xDep="50" yDep="50" xFin="200" yFin="375"></Composant>
  34.     <Composant Forme="Rectangle" Methode="Flou" Coeff="5" xDep="350" yDep="70" xFin="500" yFin="300"></Composant>
  35.    </Composants>
  36.   </Methode>
  37.  </Methodes>
  38. </Permission>
  39. </Permissions>


 
Le but étant d'avoir au final, la création de deux classes "Permission" contenant un tableau d'entiers avec l'Id des rôles, un tableau avec l'id des objets, et un tableau d'objets de type "Méthode". Pour l'instant je suis perdu dans les énumérations et les getContent/getAttribute, etc.. Je cherche en fait une méthode clair pour savoir à quel endroit je me trouve dans l'epxloration de mon fichier XML, et donc pouvoir envoyer plus facilement les données dans les classes qui vont bien :)
 
Merci d'avance!

mood
Publicité
Posté le 08-02-2006 à 21:48:57  profilanswer
 

n°1301697
benou
Posté le 08-02-2006 à 22:09:22  profilanswer
 

ton truc peut se faire facilement avec du parsing SAX si ca se limite vraiment à ça.
 
Tu peux aussi regarder du côté des XPath : ca facilite énormément la navigation dans un document DOM
 
je te laisse googler

n°1301713
Profil sup​primé
Posté le 08-02-2006 à 22:45:51  answer
 

Ok je te remercie. Parallèlement j'ai étudié un peu nano XML et j'arrive à parser ça comme je l'entends. Pour le moment j'affiche dans la console qqch de type:

Code :
  1. Permission n°1
  2. Roles ayant la permission
  3. 1
  4. 2
  5. 3
  6. Permission appliquée aux objets
  7. 101
  8. 102
  9. 103
  10. Méthode détectée: id=1 et appliquée sur l'objet 101
  11. Nouveau Composant:
  12. Forme: Rectangulaire Méthode de traitement: Flou avec force 5
  13. Coordonnées (xDep, yDep, xFin, yFin):
  14. 50, 50, 200, 375
  15. Nouveau Composant:
  16. Forme: Rectangulaire Méthode de traitement: Flou avec force 5
  17. Coordonnées (xDep, yDep, xFin, yFin):
  18. 350, 70, 500, 300


 
Par contre niveau code, c'est pas très explicite :D :

Code :
  1. void getPermissions(){
  2.        
  3.         Enumeration enumeration=xml.enumerateChildren();
  4.         //On déclare un tableau de formes
  5.         ArrayList TabForme=new ArrayList();
  6.         //System.out.println(xml);
  7.        
  8.         //Navigation dans les fils XML
  9.         while (enumeration.hasMoreElements()) {
  10.             //Déclaration des variables
  11.             //Déclaration d'un nouveau XMLElement qui représente lengthsecond niveau du fichier xml
  12.             XMLElement xml2 = (XMLElement) enumeration.nextElement();
  13.             System.out.print("Permission n°" );
  14.             System.out.println(xml2.getAttribute("ID" ));
  15.             Enumeration enumPerm=xml2.enumerateChildren();
  16.            
  17.             while (enumPerm.hasMoreElements()) {
  18.                 String BaliseCourante;
  19.                 XMLElement xml3 = (XMLElement) enumPerm.nextElement();
  20.                 Enumeration enum2=xml3.enumerateChildren();
  21.                 BaliseCourante=xml3.getName();
  22.                
  23.                 if(BaliseCourante.equals("Roles" ))
  24.                     System.out.println("Roles ayant la permission" );
  25.                 if(BaliseCourante.equals("Objets" ))
  26.                     System.out.println("Permission appliquée aux objets" );
  27.                
  28.                 while (enum2.hasMoreElements()) {
  29.                     XMLElement xml4 = (XMLElement) enum2.nextElement();
  30.                    
  31.                     System.out.println(xml4.getContent());
  32.                    
  33.                     Enumeration enum3=xml4.enumerateChildren();
  34.                    
  35.                     while (enum3.hasMoreElements()) {
  36.                         System.out.print("Méthode détectée: id=" );
  37.                         System.out.print(xml4.getAttribute("Id" ));
  38.                         System.out.print(" et appliquée sur l'objet " );
  39.                         System.out.println(xml4.getAttribute("IdObjet" ));
  40.                        
  41.                         XMLElement xml5 = (XMLElement) enum3.nextElement();
  42.                        
  43.                         Enumeration enum4=xml5.enumerateChildren();
  44.                        
  45.                         while (enum4.hasMoreElements()) {
  46.                             XMLElement xml6 = (XMLElement) enum4.nextElement();
  47.                            
  48.                             System.out.println("Nouveau Composant:" );
  49.                             System.out.print("Forme: " );
  50.                            
  51.                            
  52.                             if(xml6.getAttribute("Forme" ).equals("Rectangle" )){
  53.                                 System.out.print("Rectangulaire " );
  54.                             }else if(xml6.getAttribute("Forme" ).equals("Cercle" )){
  55.                                 System.out.print("Circulaire " );
  56.                             }
  57.                            
  58.                             System.out.print("Méthode de traitement: " );
  59.                             System.out.print(xml6.getAttribute("Methode" ));
  60.                             System.out.print(" avec force " );
  61.                             System.out.println(xml6.getAttribute("Coeff" ));
  62.                            
  63.                             System.out.println("Coordonnées (xDep, yDep, xFin, yFin): " );
  64.                            
  65.                             System.out.print(xml6.getAttribute("xDep" ));
  66.                             System.out.print(", " );
  67.                             System.out.print(xml6.getAttribute("yDep" ));
  68.                             System.out.print(", " );
  69.                             System.out.print(xml6.getAttribute("xFin" ));
  70.                             System.out.print(", " );
  71.                             System.out.println(xml6.getAttribute("yFin" ));
  72.                         }   
  73.                     }
  74.                 } 
  75.             }
  76.         }


 
Après remise en forme et commentaires, ça ira peut-être mieux... Je continue ;)
A+


Message édité par Profil supprimé le 08-02-2006 à 22:47:45
n°1305046
brisssou
8-/
Posté le 14-02-2006 à 12:03:35  profilanswer
 

Digester est la voie.

n°1305128
the real m​oins moins
Posté le 14-02-2006 à 13:33:02  profilanswer
 

xtsream


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1305744
phnatomass
Je m'empare de ton esprit !!
Posté le 15-02-2006 à 08:11:50  profilanswer
 

Je vote aussi Digester

n°1305766
brisssou
8-/
Posté le 15-02-2006 à 09:14:58  profilanswer
 

après un coup d'oeil au tuto de xstream... ben ça a l'air génial :-D
Si ça marche vraiment (pas le temps de tester là), c'est bien plus simple que digester...
à voir.

n°1305838
souk
Tourist
Posté le 15-02-2006 à 10:34:12  profilanswer
 

brisssou a écrit :

après un coup d'oeil au tuto de xstream... ben ça a l'air génial :-D
Si ça marche vraiment (pas le temps de tester là), c'est bien plus simple que digester...
à voir.


nan ca marche pas du tout en fait, c'est un gros fake [:dawa]

n°1305883
brisssou
8-/
Posté le 15-02-2006 à 11:00:55  profilanswer
 

effectivement... j'ai peut-être, éventuellement, dit une connerie...

n°1305968
the real m​oins moins
Posté le 15-02-2006 à 11:57:35  profilanswer
 

souk connard [:rofl]
brisssou > ça marche très bien ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java] Parser un fichier XML

 

Sujets relatifs
Créer un affichage style graph a partir de fichier ?Java sur Mac ?
Excel 2002 - longueur à l'ouverture d'un fichier (résolu)Vider un fichier en C++
Programmer en JAVA. Avec quoi sous linux ?[Flash8 XML] bouton precedent de la galerie photo
[vbs] pb ecriture dans un fichiersuppression de fichier
[Java-XML] Arret de lecture d'un fichier XML avec un parser SAX[java] parser XML : fichier XML dans un jar ou non....
Plus de sujets relatifs à : [java] Parser un fichier XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR