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

  FORUM HardWare.fr
  Programmation
  Java

  parser un XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parser un XML

n°2230313
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2014 à 11:40:50  profilanswer
 

Bonjour,
 
Je débute en java et je voudrai récupérer des valeurs dans un XML.
 
J'ai écris ce bout de code pour essayer de récupérer au moins la valeur "name" de chaque élément <agent> de l'entrée <ACO>, mais je ne récupère aucune valeur. :(
Pouvez vous m'aider et me dire quelle erreur je fais ?
 
Par avance merci.
 
Mon code avec ce que j'ai trouvé à droite et à gauche :
 

Code :
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.List;
  4. import org.jdom.Document;
  5. import org.jdom.Element;
  6. import org.jdom.JDOMException;
  7. import org.jdom.input.SAXBuilder;
  8. public class testjdom {
  9. public static void main(String[] args) {
  10.   SAXBuilder builder = new SAXBuilder();
  11.   File xmlFile = new File("param.xml" );
  12.   try {
  13.  Document document = (Document) builder.build(xmlFile);
  14.  Element rootNode = document.getRootElement();
  15.  System.out.println("racine = "+rootNode);
  16.  List list = rootNode.getChildren("ACO" );
  17.  for (int i = 0; i < list.size(); i++) {
  18.     Element node = (Element) list.get(i);
  19.     System.out.println("Agent : " + node.getChildText("agent" ));
  20.     System.out.println("Agent : " + node.getChildText("agent" ));
  21.  }
  22.   } catch (IOException io) {
  23.  System.out.println(io.getMessage());
  24.   } catch (JDOMException jdomex) {
  25.  System.out.println(jdomex.getMessage());
  26.   }
  27. }
  28. }

:
 
et mon xml :
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!--June 5, 2014, 11:16-->
  3. <project name="test_00.10" env="pr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  4.   <ACO name="R12_test" defaultAgentName="public" logFileName="E:\agent.log">
  5.     <agent name="R12_test_00.10_pr" url="test.f"/>
  6.     <agent name="R12_test_00.11_pr" url="test2.fr"/>
  7.     <agent name="R12_test_00.12_pr" url="test3.fr"/>
  8.     <agent name="R12_test_00.13_pr" url="test4.fr"/>
  9.     <agent name="R12_test_00.14_pr" url="test5.fr"/>
  10.   </ACO>
  11.   <domain name="R12_test_00.10">
  12.     <realm name="R12_test_00.10_tout" filter="/" scheme="Standard" protectAll="1">
  13.       <rule name="default" action="Get,Post"/>
  14.       <rule name="reject" action="OnAccessReject"/>
  15.     </realm>
  16.     <realm name="R12_test_00.10_quisuisje.aspx_unprotected" filter="quisuisje.aspx" scheme="Basic" protectAll="0"/>
  17.     <response name="default" attr="test1" agentType="WebAgent-HTTP-Header-Variable"/>
  18.     <response name="default" attr="test2" agentType="WebAgent-HTTP-Header-Variable"/>
  19.     <response name="default" attr="test3" agentType="WebAgent-HTTP-Header-Variable"/>
  20.     <response name="default" attr="test4" agentType="WebAgent-HTTP-Header-Variable"/>
  21.     <policy name="R12_test_00.10_Policy" userPolicy="OU=Root">
  22.       <responseAssociation rule="default" realm="test_00.10_tout" response="default"/>
  23.       <responseAssociation rule="reject" realm="test_00.10_tout" response="reject_global"/>
  24.     </policy>
  25.   </domain>
  26. </project>

:
 
En résultat j'ai :
 
racine = [Element: <project/>]
Agent :
Agent :
 
:jap:

mood
Publicité
Posté le 10-06-2014 à 11:40:50  profilanswer
 

n°2230327
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2014 à 14:47:57  profilanswer
 

Help :jap:

n°2230338
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2014 à 16:55:58  profilanswer
 

:(

n°2230344
dreameddea​th
Posté le 10-06-2014 à 17:52:49  profilanswer
 

pour moi le comportement est "cohérent" : getChildText renvoie le contenu de la balise "agent"... qui n'en n'a pas ...
 
Tu veux probablement utiliser plutôt getAttributeValue via un getChildren
 
Pourrais-tu essayer plutôt le code suivant :  

Code :
  1. for(Element agentNode : list.get(i).getChildren("agent" )){
  2.    System.out.println("Agent : " + agentNode.getAttributeValue("name" ));
  3. }


à la place du getChildText et voir si ça change qq chose.
 
Mais

Message cité 1 fois
Message édité par dreameddeath le 11-06-2014 à 10:24:53
n°2230349
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2014 à 18:09:53  profilanswer
 

Merci beaucoup, je teste ça des que possible.
Je te tiens au courant :jap:

n°2230422
web_olivie​r
R1 Powaaaaa
Posté le 11-06-2014 à 11:19:46  profilanswer
 

dreameddeath a écrit :

pour moi le comportement est "cohérent" : getChildText renvoie le contenu de la balise "agent"... qui n'en n'a pas ...
 
Tu veux probablement utiliser plutôt getAttributeValue via un getChildren
 
Pourrais-tu essayer plutôt le code suivant :  

Code :
  1. for(Element agentNode : list.get(i).getChildren("agent" )){
  2.    System.out.println("Agent : " + agentNode.getAttributeValue("name" ));
  3. }


à la place du getChildText et voir si ça change qq chose.
 
Mais


 
Bonjour Dreameddeath,
 
J'ai essayé ce que tu me propose mais j'ai l'arreur suivante :
 

Code :
  1. javac -classpath jdom-1.1.3.jar;. testjdom.java
  2. testjdom.java:32: cannot find symbol
  3. symbol  : method getChildren(java.lang.String)
  4. location: class java.lang.Object
  5.                                 for(Element agentNode : list.get(i).getChildren("agent" ))
  6.                                                                              ^
  7. 1 error


 
Je n'arrive pas à comprendre et à corriger :(
 
merci de ton aide.

n°2230427
web_olivie​r
R1 Powaaaaa
Posté le 11-06-2014 à 13:49:34  profilanswer
 

web_olivier a écrit :


 
Bonjour Dreameddeath,
 
J'ai essayé ce que tu me propose mais j'ai l'arreur suivante :
 

Code :
  1. javac -classpath jdom-1.1.3.jar;. testjdom.java
  2. testjdom.java:32: cannot find symbol
  3. symbol  : method getChildren(java.lang.String)
  4. location: class java.lang.Object
  5.                                 for(Element agentNode : list.get(i).getChildren("agent" ))
  6.                                                                              ^
  7. 1 error


 
Je n'arrive pas à comprendre et à corriger :(
 
merci de ton aide.


 
J'ai trouvé la solution :
 

Code :
  1. public class testjdom
  2. {
  3. public static void main(String[] args)
  4. {
  5.  SAXBuilder builder = new SAXBuilder();
  6.  File xmlFile = new File("ludo.param.xml" );
  7.  try
  8.  {
  9.   Document document = (Document) builder.build(xmlFile);
  10.   Element rootNode = document.getRootElement();
  11.   List<Element> ACOElements = rootNode.getChildren("ACO" );
  12.   for(Element element : ACOElements)
  13.   {
  14.    String ACOName=element.getAttribute("name" ).getValue();
  15.    System.out.println("ACO= "+ACOName);
  16.    List<Element> agentList=element.getChildren(agent);
  17.    for(int i = 0 ; i<agentList.size() ; i++)
  18.    {
  19.     Element agentName = agentList.get(i);
  20.     System.out.println("agent= "+agentName.getAttribute("name" ).getValue());
  21.     System.out.println("url= "+agentName.getAttribute("url" ).getValue());
  22.    } 
  23.   }
  24.   List<Element> domainElements = rootNode.getChildren("domain" );
  25.    for(Element element : domainElements)
  26.   {
  27.    String domainName=element.getAttribute("name" ).getValue();
  28.    System.out.println("Domain= "+domainName);
  29.    List<Element> realmList=element.getChildren("realm" );
  30.    for(int i = 0 ; i<realmList.size() ; i++)
  31.    {
  32.     Element realmName = realmList.get(i);
  33.     System.out.println("realm= "+realmName.getAttribute("name" ).getValue());
  34.     System.out.println("scheme= "+realmName.getAttribute("scheme" ).getValue());
  35.    } 
  36.   }
  37.  }
  38.  catch (IOException io)
  39.  {
  40.   System.out.println(io.getMessage());
  41.  }
  42.  catch (JDOMException jdomex)
  43.  {
  44.   System.out.println(jdomex.getMessage());
  45.  }
  46. }
  47. }


 
:)


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

  parser un XML

 

Sujets relatifs
[ASP] Parser un XML provenant d'un webserviceSOAPParser du XML : récup d'un attribut
Compilation parser XML pour intégration à un code CParser XML en Java et y récupérer des informations
Parser une XML à partir d'une DTDParser un flux XML en PHP pour récupérer une valeur
[PHP] Comment parser un XML sans racine ?Wanted : Parser XML avec bonnes propriétés
[PHP] Parser XML et &Axis2 et parser XML
Plus de sujets relatifs à : parser un XML


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