XML lire balise pour obtenir la valeur [Résolu]

SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 17:40 - Dernière réponse : SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention
- 30 nov. 2010 à 20:49
Bonjour à vous tous,

J'ai fait mes propres classe pour lire des fichier xml afin de ressortir la ou les balises précises que je veux obtenir l'information. Le seul problème c'est que dans mon fichier xml je dois espacer mes valeurs ce qui n'est pas très standard.

Un fichier xml devrait être écris de la sorte :

personnes.xml
--------------

<nom>Smith</nom>
John





Ainsi je devrais pouvoir sortir les balise que je veux dans ce cas nom et prenom pour obtenir : Smith John


Dans mon fichier xml actuel afin que le tout fonctionne je dois espacé le tout afin d'en ressortir mes valeurs ce qui est très laid :


personnes.xml
--------------

<nom> Smith </nom>
John





je vais copier mes fichiers source pour vous montrer mes algos si quelqu'un aurait une idée afin de corriger ce problème ce serais apprécier.

SpaceHamAgent
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 20:49
3
Merci
Salut DarkSidious :),

J'ai refais une nouvelle classe grace a des exemple du net et j'ai ajouté le JDom.jar dans mon classpath. Si jamais d'autres personnes voudrait avoir accès à mon code eh bien c'est simplement que le tout retourne la valeur d'une balise précise.

exemple.xml
----------------------------------
<nomapplication>
<client>
<nom>Smith</nom>
John


</client>
<db>
192.168.1.201
8080


</db>
</nomapplication>
---------------------------------

Avec ma classe ici-bas je n'ai qu'à faire ceci pour en sortir la String de valeur demandé :


String valeur = XMLReader.readBalise("client", "prenom", "exemple.xml")

la valeur contiendra donc : John


Source de mon fichier classe XMLReader.java

--------------------------------------
package xmlr.utils;

import java.io.*;
import org.jdom.*;
import org.jdom.input.*;

import java.util.List;
import java.util.Iterator;

public class XMLReader
{
private static org.jdom.Document document;
private static Element racine;

public static String readBalise(String parent, String child, String path)
{
//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(path));
}
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
String balise = afficheALL(parent, child);

return balise;
}
private static String afficheALL(String parent, String child)
{
String balise = "no info";
//On crée une List contenant tous les noeuds "etudiant" de l'Element racine
List listBalise = racine.getChildren(parent);

//On crée un Iterator sur notre liste
Iterator i = listBalise.iterator();
while(i.hasNext())
{
//On recrée l'Element courant à chaque tour de boucle afin de
//pouvoir utiliser les méthodes propres aux Element comme :
//selectionner un noeud fils, modifier du texte, etc...
Element courant = (Element)i.next();
//On affiche le nom de l'element courant
System.out.println(courant.getChild(child).getText());
balise = courant.getChild(child).getText();
}
return balise;
}
}
--------------------------------------
SpaceHamAgent

Merci SpaceHam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de SpaceHam
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 30 nov. 2010 à 18:20
0
Merci
Salut,

Quel est l'intérêt de coder ce genre de chose alors qu'il existe déjà plusieurs bibliothèque qui font déjà cà très bien, et de façon optimisé : non seulement tu y gagne du temps en utilisant ces bibliothèques, mais en plus, ce sont des bibliothèques éprouvées qui ne comportent pas ou peu de bugs et qui peuvent être maintenues par d'autres personnes.

Tu peux par exemple voir du côté de JDom.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 18:50
0
Merci
il y a SAX et DOM oui j'ai regardé mais il me semble que je ne trouvais jamais le .jar afin de le rajouté dans mon buildpath d'Eclipse. A moins que tu puisses me faire un exemple simple avec DOM (Je crois que c'est lui le plus simple) Ce serais apprécié. et surtout ou trouver le bon package.


SpaceHamAgent
Commenter la réponse de SpaceHam
SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 18:50
0
Merci
il y a SAX et DOM oui j'ai regardé mais il me semble que je ne trouvais jamais le .jar afin de le rajouté dans mon buildpath d'Eclipse. A moins que tu puisses me faire un exemple simple avec DOM (Je crois que c'est lui le plus simple) Ce serais apprécié. et surtout ou trouver le bon package.


SpaceHamAgent
Commenter la réponse de SpaceHam
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 30 nov. 2010 à 18:54
0
Merci
Salut,

Tu peux trouver le jar de JDom sur la page de téléchargement de la bibliothèque :
http://www.jdom.org/downloads/index.html

Ensuite pour l'ajout dans le classpath de ton application sous eclipse, ca se fait exactement de la même façon que pour tout autre jar : clic droit sur ton projet puis clic sur le menu "Build Path/Configure Build Path"

Pour ce qui est des exemples d'utilisation, il en existe plusieurs sur le net ou ici. Va voir ma source de parser de flux xml de météo par exemple (je me rappelle plus si j'utilise JDom dans ma source ou SAX).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 19:14
0
Merci
Chose certaine j'en était sur que tu m'aurais parlé de Sax ou Dom... mais bon j'essaie juste de me replonger la dedans mais sans succès. Je cherche toujours ton exemple que tu me parle tout en cherchant sur le net d'autres exemples...

SpaceHamAgent
Commenter la réponse de SpaceHam
SpaceHam 78 Messages postés lundi 27 mars 2006Date d'inscription 22 octobre 2015 Dernière intervention - 30 nov. 2010 à 20:49
0
Merci
Salut DarkSidious :),

J'ai refais une nouvelle classe grace a des exemple du net et j'ai ajouté le JDom.jar dans mon classpath. Si jamais d'autres personnes voudrait avoir accès à mon code eh bien c'est simplement que le tout retourne la valeur d'une balise précise.

exemple.xml
----------------------------------
<nomapplication>
<client>
<nom>Smith</nom>
John


</client>
<db>
192.168.1.201
8080


</db>
</nomapplication>
---------------------------------

Avec ma classe ici-bas je n'ai qu'à faire ceci pour en sortir la String de valeur demandé :


String valeur = XMLReader.readBalise("client", "prenom", "exemple.xml")

la valeur contiendra donc : John


Source de mon fichier classe XMLReader.java

--------------------------------------
package xmlr.utils;

import java.io.*;
import org.jdom.*;
import org.jdom.input.*;

import java.util.List;
import java.util.Iterator;

public class XMLReader
{
private static org.jdom.Document document;
private static Element racine;

public static String readBalise(String parent, String child, String path)
{
//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(path));
}
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
String balise = afficheALL(parent, child);

return balise;
}
private static String afficheALL(String parent, String child)
{
String balise = "no info";
//On crée une List contenant tous les noeuds "etudiant" de l'Element racine
List listBalise = racine.getChildren(parent);

//On crée un Iterator sur notre liste
Iterator i = listBalise.iterator();
while(i.hasNext())
{
//On recrée l'Element courant à chaque tour de boucle afin de
//pouvoir utiliser les méthodes propres aux Element comme :
//selectionner un noeud fils, modifier du texte, etc...
Element courant = (Element)i.next();
//On affiche le nom de l'element courant
System.out.println(courant.getChild(child).getText());
balise = courant.getChild(child).getText();
}
return balise;
}
}
--------------------------------------
SpaceHamAgent
Commenter la réponse de SpaceHam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.