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 :

Parsing Xml et JDOM


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut Parsing Xml et JDOM
    Bonjours

    Je souhaite parser un fichier xml (c'est un exemple pour simplifier le probléme):

    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
    <?xml version="1.0" encoding="utf-8"?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<body id="no">
    			<style>
    				n
    			</style>
    		</body>
    		<body id="yes">
    			<style>
    				no items founds
    			</style>
    		</body>
    	</head>
    </html>
    Je veut aller chercher la valeur "no items founds" mais j'arrive pas a spécifier dans mon programme qu'il doit trouver par la balise <body id="yes">.

    A chaque fois il va directement dans la première balise body

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    	   public static void main(String[] args)
    	   {
     
     
    	      //On crée une instance de SAXBuilder
    	      SAXBuilder sxb = new SAXBuilder();
    	      try
    	      {
    	         //On crée un nouveau document JDOM avec en argument le fichier XML
    	         //Le parsing est terminé ;)
    	         document = sxb.build(new File("new2.xml"));
    	      }
    	      catch(Exception e){}
     
    	      //On initialise un nouvel élément racine avec l'élément racine du document.
     
    	      racine = document.getRootElement();
     
    	      //Méthode définie dans la partie 3.2. de cet article
     
     
     
    //Ajouter cette méthodes à la classe JDOM2
     
       //On crée une List contenant tous les noeuds "etudiant" de l'Element racine
       Namespace nameSpace = Namespace.getNamespace("html", "http://www.w3.org/1999/xhtml");
       List  head = racine.getChildren("head",nameSpace);
       String resultat="no items founds";
     
       Iterator i = head.iterator();
       while(i.hasNext())
       {
     
          Element courant = (Element)i.next();
          Element body = courant.getChild("body",nameSpace);
     
          if (egal(body.getChild("style",nameSpace).getTextTrim(),resultat))
          { System.out.println(body.getChild("style",nameSpace).getTextTrim());}
          		else
          			System.out.println("no");
       	  }}
     
     
     
    	   public static boolean egal (String p1,String p2)
    		{boolean p = false;
    		int ph1=p1.length();
    		int ph2=p2.length();
    		if (ph1==ph2)
    			{p=true;
    		for (int i=0;i<ph1;i++){
    			if (p1.charAt(i)!=p2.charAt(i)){
    				p=false;}}}
     
    		return p;
    merci pour votre aide

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Deux possibilités selon ton besoin:
    - Si tu souhaites accéder directement à cet élément, comme tu connais le chemin, tu peux utiliser du XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xPath = XPathFactory.newInstance().newXPath();
    xPath.compile("//body[@id='yes']/style").evaluate(...)
    - Si tu parcours tout, tu peux récupérer la valeur de l'attribut (probablement grâce à une méthode 'getAttribute')

  3. #3
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Oui la valeur de l'attribut se récupére avec getAttribut mais ce que je veut que mon programme fasse c'est: il rentre dans le document passe par la balise "head" (jusque là aucun problème), après il doit aller chercher la balise body avec ça valeur d'attribut (ici id="yes"),si c'est le cas il doit aller dans la balise "style" chercher "no items found",

    Je bloque au niveau du body j'arrive aller chercher la valeur id de chaque body mais je n'arrive pas a lui dire d'aller chercher juste le body avec id="yes" puis d'afficher la valeur de la balise style

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Le XPath est ton ami, je t'ai mis un des chemins qui te permettrait d'y arriver dans mon post précédent.

Discussions similaires

  1. HttpClient et parsing XML avec JDom
    Par dawadam dans le forum Android
    Réponses: 4
    Dernier message: 07/03/2011, 14h36
  2. HttpClient et parsing XML avec JDom
    Par dawadam dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/03/2011, 10h38
  3. parsing xml en francais
    Par ouioui2000 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/10/2005, 17h03
  4. [JDOM] XML Node JDOM
    Par quidam66 dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 14/09/2005, 23h15
  5. [JSP] Parsing XML avec JDOM
    Par benben13 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 26/08/2005, 17h19

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