SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015
-
30 nov. 2010 à 17:40
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015
-
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.
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015 30 nov. 2010 à 20:49
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
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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 30 nov. 2010 à 18:20
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
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015 30 nov. 2010 à 18:50
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.
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015 30 nov. 2010 à 18:50
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
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
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015 30 nov. 2010 à 19:14
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...
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015 30 nov. 2010 à 20:49
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
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