[Java] DOM : Recherche d'informations dans un fichier xml

DOM : Recherche d'informations dans un fichier xml [Java] - Java - Programmation

Marsh Posté le 25-02-2004 à 15:56:09    

Salut
 
Je ne vois pas comment récupérer le texte contenu dans un element de mon fichier .xml
le code suivant montre que je récupère un "Element" sur ce que je veux, mais après comment à partir de cette interface Element avoir accès au contenu texte du noeud ?
Comment avoir non pas une interface Element mais Text, ce qu'il me faudrait...
 

Code :
  1. DocumentBuilderFactory docBF = DocumentBuilderFactory.newInstance();
  2. try
  3. {
  4.    DocumentBuilder docB = docBF.newDocumentBuilder();
  5.    Document doc = docB.parse("fichier.xml" );
  6.    NodeList list = doc.getElementsByTagName("toto" );
  7.    for(int i=0;i<list.getLength();i++)
  8.    {
  9.        //list.item(x) est un "Element", comment récupérer son texte ?
  10.        Element t = (Element)list.item(i);
  11.                
  12.        System.out.println(t.getNodeValue()); //renvoie null, c'est normal car Element, cf doc
  13.    }
  14. ...


merci
   ANT

Reply

Marsh Posté le 25-02-2004 à 15:56:09   

Reply

Marsh Posté le 25-02-2004 à 16:09:19    

Code :
  1. t.getFirstChild().getNodeValue()

Reply

Marsh Posté le 25-02-2004 à 16:09:24    

j'imagine que tu veux le texte compris entre tes balises <toto> et </toto>. Pour ça, il faut que tu récupères le node, fils du Node que tu as là. Dont le nom sera #text
Enfin, je sais pas si c'est la seule/la meilleure méthode, mais j'ai fait comme ça moi.


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 25-02-2004 à 16:14:58    

Code :
  1. /** return all the text contained in the Element (the text nodes are concatened)
  2.  *  @return never null : empty elements return ""  
  3.  */
  4. public static String getText(Element elem) {
  5.  NodeList nl = elem.getChildNodes();
  6.  StringBuffer buffer = new StringBuffer();
  7.  for (int i = 0; i < nl.getLength(); i++) {
  8.   Node node = nl.item(i);
  9.   if (node.getNodeType() == Node.TEXT_NODE) {
  10.    buffer.append(node.getNodeValue());
  11.   }
  12.  }
  13.  return buffer.toString();
  14. }


Message édité par benou le 25-02-2004 à 16:15:24

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

Sujets relatifs:

Leave a Replay

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