[JDom] récupérer le contenu d'un balise...

récupérer le contenu d'un balise... [JDom] - Java - Programmation

Marsh Posté le 17-06-2002 à 11:50:24    

salut, je cherche à récupérer simplement le contenu de ma balise. exemple :

Code :
  1. <root>
  2.      <nodelevel1>test</nodelevel1>
  3. </root>


 
puis dans ma classe, je fais :  

Code :
  1. SAXBuilder builder = new SAXBuilder( false );
  2. Document doc = builder.build( FileList[i] );
  3. Element root = doc.getRootElement();
  4. System.out.println( root.getChild( "nodelevel1" ).getContent() );


 
et voilà le résultat :

Code :
  1. [[Text: test]]


 
Alors que moi, je souhaite juste avoir "test" en sortie... alors, j'ai pas trop envie de traiter la chaîne, d'autant que lorsqu'il s'agit d'un attribut d'une balise, ça marche sans pb en faisant

Code :
  1. getAttribute( "monAttribut" ).getValue()


 
vous sauriez m'aider ?


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 11:50:24   

Reply

Marsh Posté le 17-06-2002 à 11:55:02    

est ce que tu as pris la peine de regarde la javadoc pour savoir ce que getContent() renvoie au moins ???
 
mais c'est pas vrai, y a donc personne qui utilise la javadoc avant de poster ici ou quoi ?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 11:56:50    

si j'ai lu la javadoc, et ça renvoie une list tout conne, mais je veux savoir si y'a pas moyen de récupérer directement le contenu...


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 11:57:09    

getContent() te renvoie une java.util.List !!!!
 

Citation :


This returns the full content of the element as a List which may contain objects of type Text, Element, Comment, ProcessingInstruction, CDATA, and EntityRef.


 
En l'occurrence tu dois prendre le Text le caster et faire getText() dessus


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 11:58:53    

z0rglub a écrit a écrit :

si j'ai lu la javadoc, et ça renvoie une list tout conne, mais je veux savoir si y'a pas moyen de récupérer directement le contenu...  




 
pour ce que tu veux faire il s'agit bien plus que d'une list tout conne comme tu dis. Si tu souhaites récpérer le texte il faut pas uniquement te baser sur ce que la méthode toString() de java.util.list renvoie
 
Imagine si tu veux trouver le texte d'un élémnet et que cet élément a des sous élements. Avec ta méthode, tu vas imprimer tout les sous-éléments + le texte de l'élément.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 12:01:17    

oui, je vois bien, c'est juste que je connaît ma doctype, et je sais qu'il n'y a pas de sous élément... mais je comprend le besoin de généricité... en attendant, je fais des tests pour récupérer juste le contenu... (je sais que le getContent().get( 0 ) donne un objet de la classe org.jdom.Text


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 12:03:23    

ok, c'est bon, merci Darklord (vais-je devenir ton boolay ? )

Code :
  1. System.out.println( ( ( Text )root.getChild( "nodelevel1" ).getContent().get( 0 ) ).getText() );


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 12:03:38    

ce que tu peux faire c'est itérer sur ta liste jusqu'à  ce que l'éléménet soit une instace de Text
 
if (el instanceof Text)
 
et lorsque c'est bon tu appelles getText() dessus et tu as le résultat.  
 
Je te conseille de faire ca parce que changer le code pour ajouter un élémnet c'est pas super flexible.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 12:04:27    

z0rglub a écrit a écrit :

ok, c'est bon, merci Darklord (vais-je devenir ton boolay ? )

Code :
  1. System.out.println( ( ( Text )root.getChild( "nodelevel1" ).getContent().get( 0 ) ).getText() );

 




 
si tu continues à programmer comme ça oui ;)
 
Allez sans rancune mais bon le code là est super spécifique et c'est dommage de gacher un si bel outil comme ca. Utilise des méthodes plus flexibles qui ne font pas prérequis sur le contenu d'un élément.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 12:08:45    

DarkLord a écrit a écrit :

Allez sans rancune mais bon le code là est super spécifique et c'est dommage de gacher un si bel outil comme ca. Utilise des méthodes plus flexibles qui ne font pas prérequis sur le contenu d'un élément.



ok, je suis complètement d'accord avec toi, je vais faire plus générique (autant que faire se peut, parce que je dois qd même programmer vite, parce que mon responsable veut pas que je m'éternise là dessus, il veut que ça marche, un point c'est tout, moi je préfère quand ça marche bien, mais bon...)


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 12:08:45   

Reply

Marsh Posté le 17-06-2002 à 12:14:39    

tu verras comme ce sera plus simple lorque tu devras étendre les fonctionnalités du système. Avec ton système actuel, il suffit de rajouter un attribut pour qu'il te balance une jolie CastException ...
 
Le genre  de bug que tu mettras 4h à trouver si ton appli est plus ou moins importante
 
Crois moi c'est du temps précieux sauvé pour l'avenir. Et ton boss est vraiment con de réagir comme ça. Te mettre la pression ok mais te faire coder n'importe comment, merci bien!


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 12:17:34    

j'éxagère un peu, mais c'est vrai que parfois je vois du code qu'il a écrit y'a un moment c n'importe koi, mais on le change pas parce que'on sait qu'il marche... c une façon de voir les choses....


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 12:19:37    

z0rglub a écrit a écrit :

j'éxagère un peu, mais c'est vrai que parfois je vois du code qu'il a écrit y'a un moment c n'importe koi, mais on le change pas parce que'on sait qu'il marche... c une façon de voir les choses....  




 
 
ouais je connais j'ai du code dans ce gout là


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 12:22:59    

pendant que j'y pense... là j'utilise 2 jars : jdom.jar (150 Ko) et xerces.jar (1500 Ko environ).
Y'a t-il un moyen d'utiliser des jar plus petits ? (pas pour cette appli, car c'est du servlet, mais pour un autre projet à moi, sous forme d'applet)


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 17-06-2002 à 12:24:48    

justement je me posais la meme question.


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed