XML et XSLT en api JAVA

XML et XSLT en api JAVA - Java - Programmation

Marsh Posté le 16-12-2004 à 15:49:45    

Bonjour,
 
J'aimerai charger en DOM un fichier XML mais seulement les éléments qui m'interrese donc par exemple comme avec une requete XSLT dans un fichier XSL :
"/Struct/Ligne[id=0]"
 
qui me remonterai que les noeuds avec id 0 mais le souci c'est que je connais pas au départ la valeur ni le param (ici id).  
Donc j'aimerai savoir si en java il existait une façon de faire cette requete en dynamique sans construire un fichier XSLT.
Je cherche depuis ce matin et je n'ai rien trouvè.
 
Merci.


Message édité par vapo le 16-12-2004 à 16:50:55
Reply

Marsh Posté le 16-12-2004 à 15:49:45   

Reply

Marsh Posté le 16-12-2004 à 17:55:07    

Personne n'a jamais fait de query dans un fichier XML via de API Java ?

Reply

Marsh Posté le 16-12-2004 à 18:11:25    

tu peux passer par un XPATH plutot que par un XSLT ... le XPATH te permettra de récupérer un NodeList contenant les noeud qui correspondent au xpath. je te laisse chercher la syntaxe du xpath pour l'histoire du nom de l'attribut qui est variable.
 
pour la méthode à utiliser, avec xalan c'est

http://xml.apache.org/xalan-j/apidocs/org/apache/xpath/XPathAPI.html#selectNodeList(org.w3c.dom.Node, java.lang.String)


 
edit : bordel joce !!  :fou:


Message édité par benou le 16-12-2004 à 18:13:00

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 17-12-2004 à 13:14:37    

Merci pour ce début de réponse, j'ai descendu le JAR du site d'apache pour le XALAN (pour info dans: xalan-j_2_6_0-bin.zip) j'ai réussi à mettre en oeuvre l'api mais je me retrouve devant un autre problème je m'explique j'ai la structure suivante :
 
<?xml version='1.0' encoding='iso-8859-1'?>
<Struct>
 <Ligne id='1' transferer='0' timestamp='0'>
  <CHAMP1>CHAMP1</CHAMP1>
  <CHAMP2>CHAMP2</CHAMP2>
  <CHAMP3>CHAMP3</CHAMP3>
  <CHAMP4>CHAMP4</CHAMP4>
 </Ligne>
 
 <Ligne id='2' transferer='1' timestamp='0'>
  <CHAMP2>CHAMP2</CHAMP2>
  <CHAMP3>CHAMP3</CHAMP3>
  <CHAMP4>CHAMP4</CHAMP4>
 </Ligne>
 
 <Ligne id='3' transferer='1' timestamp='0'>
  <CHAMP1>CHAMP1</CHAMP1>
  <CHAMP3>CHAMP3</CHAMP3>
  <CHAMP4>CHAMP4</CHAMP4>
 </Ligne>
 
 <Ligne id='4' transferer='1' timestamp='0'>
  <CHAMP1>CHAMP1</CHAMP1>
  <CHAMP2>CHAMP2</CHAMP2>
  <CHAMP4>CHAMP4</CHAMP4>
 </Ligne>
 
 <Ligne id='5' transferer='0' timestamp='0'>
  <CHAMP1>CHAMP1</CHAMP1>
  <CHAMP2>CHAMP2</CHAMP2>
  <CHAMP3>CHAMP3</CHAMP3>
 </Ligne>
 
 <Ligne id='6' transferer='0' timestamp='0'>
  <CHAMP1>CHAMP1</CHAMP1>
  <CHAMP2>CHAMP2</CHAMP2>
 </Ligne>
 
 <Ligne id='7' transferer='0' timestamp='0'>
  <CHAMP3>CHAMP3</CHAMP3>
  <CHAMP4>CHAMP4</CHAMP4>
 </Ligne>
 
</Struct>
 
et en fait j'aimerai n'avoir dans mon nodelist que les elements que les transfere='0', j'ai essayè diffèrentes choses :
- /Struct/Ligne[transferer='0']/* .............
 
Mais rien n'y fait, si vous avez une idèe ....
 
 
Merci pour le début de piste.

Reply

Marsh Posté le 17-12-2004 à 15:20:38    

essaie
/Struct/Ligne[@transferer='0']

Reply

Marsh Posté le 18-12-2004 à 14:21:01    

Un petit tuto sympa sur XPath pourra peut-être t'aider pour la suite : http://www.w3schools.com/xpath/default.asp

Reply

Sujets relatifs:

Leave a Replay

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