remplir un combobox

linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011 - 7 juin 2010 à 17:02
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011 - 17 juin 2010 à 16:15
Bonjour a tous, je suis débutante en JAVA ,et j'ai un problème avec les combobox ,j'ai un fichier ,je veux récupérer les mots suivants Base-donnee,attribut,FN2.........FN3 ,
voila une partie de ce fichier:

</Notion>
- <Module_enseignement rdf:ID="Base-donnee">











</Module_enseignement>
<Notion rdf:ID="BCNF" />
- <Notion rdf:ID="cle">

</Notion>

ça veut dire je veux récupérer le contenu de la balise </Notion> et le mettre dans un tableau d'objet,ensuite je le mettre dans combobox.
j'ai un problème avec JDOM alor je peux faire ça sans l'utilise.
j'utilise JDK 1.5

Merci d'avoir m'aider .

24 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 juin 2010 à 17:21
Salut,

Pourquoi ne pas vouloir utiliser JDom ? C'est quoi ton problème avec JDom ? Ce sera bien plus simple à faire en utilisant JDom (ou une autre bibliothèque XML) que de parser ton fichier à la main !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
7 juin 2010 à 18:16
salut
lorsque j'utilise JDOM (et mém apré l'ajout de JDOM.Jar à l'eclipse)ça génére des erreurs .Il n ya pas autre solution??
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 juin 2010 à 18:29
Salut,

Si tu fait le choix de ne plus utiliser une bibliothèque parce que tu n'arrives pas à l'intégrer à ton projet du premier coup, tu n'iras pas bien loin...

ça génére des erreurs


Quelles erreurs ?

Essaye de comprendre d'où vient ces erreurs, et les corriger. Ce sera bien plus simple que de réinventer la roue, et ce faire ton propre parser XML alors que JDom fait cà déjà très bien...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
8 juin 2010 à 21:33
Salut DARKSIDIOUS je n'ai trouvé pas une solution pour mon probléme alors je vais essayer d'utiliser JDOM est ce que tu peux m'aider pour faire ça(un exemple pour lire le contenu d'une balise ou...) ??
merci d'avance,à plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
8 juin 2010 à 21:45
Salut,

Commence déjà par nous dire quelles erreurs sont déclenchées lorsque tu essaye d'utiliser JDom.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
8 juin 2010 à 23:20
salut:
Il me parait que je n'ai pas pu installer JDOM d'une façon correcte c'est pour ça que j'ai constater quelques erreurs,
mais maintenant je l'ai installé convenablement car lorsque j'ajoute
import org.w3c.dom.* ça ne déclenche aucune erreur,
mais je ne peux pas lire un fichier xml

merci
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
9 juin 2010 à 00:14
salut
j'essaye de faire ça mai aucun résulta ,tu peux me dire ou est le problème DARKSIDIOUS ??

private static Document getDocumentFromXMLFile(File sourceFile)
{
DocumentBuilder docBuilder;
Document doc = null;
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setIgnoringElementContentWhitespace(true);

try
{
docBuilder = docBuilderFactory.newDocumentBuilder();
}
catch(ParserConfigurationException e)
{
System.out.println("Wrong parser configuration : " + e.getMessage());
return null;
}
try
{
doc = docBuilder.parse(sourceFile);
}
catch(SAXException e)
{
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
}
catch(IOException e)
{
System.out.println("Can't read file");
}
return doc;
}


public static void importStringFromXMLFile(File sourceFile)
{
Document doc = getDocumentFromXMLFile(sourceFile); // ici on utilise la class private vu au dessus
ArrayList<String>[] info = new ArrayList[20];

NodeList nl = doc.getElementsByTagName("Notion"); // ici on recup la balise Notion de ton XML pour recup les info
for(int i = 0; i<nl.getLength(); i++)
{
Node n = nl.item(i);
NamedNodeMap nnm = n.getAttributes();
Node nModule_enseignement= nnm.getNamedItem("Module_enseignement");
String Module_enseignement=nModule_enseignement.getNodeValue();
System.out.print("attribue1" +Module_enseignement );


Node naborde= nnm.getNamedItem("aborde ");
String aborde = naborde.getNodeValue();
System.out.print("attribue2" +aborde);

}
}


cordialement.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 juin 2010 à 07:50
Salut,

ça mai aucun résulta


Soit plus précis : qu'est-ce que ca t'affiche ? Est-ce qu'il y a des exceptions ? As-tu essayé de mettre un point d'arrêt dans ton code pour voir le cheminement de l'exécution, et connaitre le contenu des variables à chaque ligne ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
10 juin 2010 à 21:32
salut DARKSIDIOUS voici mon code qui permet de lire et afficher le contenu d'un fichier xml mais je ai pas encore trouver l'instruction qui permet de lire les mots en couleur :

</Notion>
- <Module_enseignement rdf:ID="Base-donnee">











</Module_enseignement>
<Notion rdf:ID="BCNF" />
- <Notion rdf:ID="cle">

</Notion>

voila la partie de code:
private void OpenXMLfile(File fichier) {
DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();

// création d'un constructeur de documents
DocumentBuilder constructeur = fabrique.newDocumentBuilder();

// lecture du contenu d'un fichier XML avec DOM

Document document = constructeur.parse(fichier);

//traitement du document
printDocument(document);
}catch(ParserConfigurationException pce){
System.out.println("Erreur de configuration du parseur DOM");
System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
}catch(SAXException se){
System.out.println("Erreur lors du parsing du document");
System.out.println("lors de l'appel à construteur.parse(xml)");
}catch(IOException ioe){
System.out.println("Erreur d'entrée/sortie");
System.out.println("lors de l'appel à construteur.parse(xml)");
}
}
public static void printNode(Node node){
System.out.println(node);
NodeList nodes = node.getChildNodes();
for(int i=0; i<nodes.getLength(); i++){
Node n = nodes.item(i);
printNode(n);
}
}
public static void printDocument(Document document){
Element racine = document.getDocumentElement();
printNode(racine);
s'il te plais aide moi ,
merci
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 juin 2010 à 21:51
Salut,

Déjà, montre nous ton fichier xml au complet, car en l'état, il s'agit d'un bout qui est mal formé. Donc pas évident de savoir quelle requête XPath ou quel parcourt d'arborescence il faut utiliser...

En attendant, regarde du côté de XPathpour voir comment tu peux facilement accéder à des éléments de ton arbre DOM. Ce tutorial n'utilise pas JDom, mais JDom a des classes qui te permette d'utiliser des requêtes XPath.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
11 juin 2010 à 09:58
salut:
voici mon fichier xml:



-

-



-



-













-


-




-



-



-



-
null

-


-


-






-



-



-




-







merci DARKSIDIOUS
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 juin 2010 à 21:27
Salut,

Essaye donc de récupérer le Module_enseignement dont l'id est Base_donnee : la requête XPath doit ressembler à "//Module_enseignement[@ID='Base-donnee']" et une fois que tu as ce module, parcoure ces childrens afin de récupérer l'attribute resource de tes noeuds.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
11 juin 2010 à 23:19
salut::
ok j'ai essayé faire ça :
private void loadfile(File fichier) {
chemin.setText("Le chemin: " + fichier);
try{
// création d'une fabrique de documents
DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
// création d'un constructeur de documents
DocumentBuilder constructeur = fabrique.newDocumentBuilder();
// lecture du contenu d'un fichier XML avec DOM
Document document = constructeur.parse(fichier);

//traitement du document

try {
Element racine = document.getDocumentElement();
XPath xpa = XPath.newInstance("//Module_enseignement");
List results = xpa.selectNodes(racine) ;
Iterator iter = results.iterator() ;
Element noeudCourant = null;
String Id = null ;

while (iter.hasNext()){
/* Pour chaque patient nous allons chercher son nom puis l'afficher */
noeudCourant = (Element) iter.next();
xpa = XPath.newInstance("./@Id");
Id = xpa.valueOf(noeudCourant);
System.out.println("Valeur : " + xpa.valueOf(noeudCourant));
}
} catch (JDOMException e) {
System.out.println("Erreur JDOM " + e.getMessage() );
e.printStackTrace();
}

}catch(ParserConfigurationException pce){
System.out.println("Erreur de configuration du parseur DOM");
System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
}catch(SAXException se){
System.out.println("Erreur lors du parsing du document");
System.out.println("lors de l'appel à construteur.parse(xml)");
}catch(IOException ioe){
System.out.println("Erreur d'entrée/sortie");
System.out.println("lors de l'appel à construteur.parse(xml)");
}
}

je ne peux pas utiliser directement "//Module_enseignement[@ID='Base-donnee']" car module d'enseignement peut prendre autre valeur.
mais ça déclenche des erreurs :

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredElementImpl
at org.jaxen.jdom.DocumentNavigator.getDocumentNode(DocumentNavigator.java:396)
at org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPath.java:102)
at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102)
at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:677)
at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:216)
at org.jdom.xpath.JaxenXPath.selectNodes(JaxenXPath.java:122)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 juin 2010 à 11:04
Salut,

C'est sur quelle ligne que tu as cette erreur de cast ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
12 juin 2010 à 23:38
salut:
salut DARKSIDIOUS ,le problème est dans la lecture du contenu de racine:
<rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1265893389.owl#" xml:base="http://www.owl-ontologies.com/Ontology1265893389.owl" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#">
c'est pour ça je ne peut lire le fichier sauf si j utilise Namespace.

ta une idée??
merci
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
16 juin 2010 à 23:22
salut
enfin j'ai réussit et j'ai affiché les informations de mon fichier xml ,j' ai utilisé SAX ,voila mon code
private void openfile(File fichier) {
chemin.setText("Le chemin: " + fichier);
SAXParser p=null;
try {
p=SAXParserFactory.newInstance().newSAXParser();
p.getXMLReader().setFeature("http://xml.org/sax/features/namespaces",true );
}
catch (ParserConfigurationException pce) {
System.err.println("Impossible de créer le parser SAX");
System.err.println(pce);
System.exit(1);
}catch (SAXException saxe) {
System.err.println("Erreur SAX.");
System.err.println(saxe);
System.exit(1);
}
try{
p.parse(fichier, new MonGestionnaire());
}catch (SAXException saxe){
System.err.println("Erreur SAX.");
System.err.println(saxe);
System.exit(1);
}catch(IOException ioe){
System.err.println("Erreur de lecture du fichier.");
System.err.println(ioe);
System.exit(1);
}
}

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public class MonGestionnaire extends DefaultHandler {

public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
String nom = attributs.getValue(0);
if( localName.equals("Module_enseignement")){
System.out.println(""+ nom);
}

if( localName.equals("aborde")){
System.out.println(" "+ nom);
}
}// startElement


}
ça m'affiche :
Base-donnee
#attribut
#FN2
#BCNF
#normalisation
#FN1
#Formes_normales
#modele_relationnel
#cle
#relation
#conception_base_donnee
#FN3
Reseau
Systeme-exploitation

exactement ce que je veux,mais je ne peux pas stocker ces infos dans un tableau???!!
ta une idée DARKSIDIOUS!!!
merci .
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 juin 2010 à 23:33
Salut,

Pour ce qui est du namespace utilisé, je ne sais pas, je n'ai jamais utilisé JDom pour parsé un document qui contient un namespace. Peut-être un paramétrage à faire pour lui indiquer les préfixes utilisés dans ton document.

Concernant SAX, c'est un autre approche de DOM : DOM charge tout ton document xml en mémoire, et construit un arbre, ce qui est beaucoup plus simple à parcourir. SAX lui se limite à lever un événement à chaque fois qu'il détecte une balise xml lorsqu'il lit le fichier séquentiellement. C'est donc beaucoup plus compliqué à utiliser, et c'est à toi de faire le boulot, par contre, il a d'excellente performance car tu n'es plus obligé de lire tout le fichier si tu ne veux récupérer qu'une partie de celui-ci (c'est particulièrement vrai pour des gros fichiers !).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
17 juin 2010 à 11:44
salut DRKSIDIOUS j'ai réussit a lire mon fichier et afficher les information mais maintenant je veux les récupérer dans une table ou une voila mon nouveau code
private void loadfile(File fichier) {
chemin.setText("Le chemin: " + fichier);

Element racine;
 Document document;

try{
SAXBuilder sxb = new SAXBuilder();
document = sxb.build(fichier);
racine = document.getRootElement();
try{XPath xp=XPath.newInstance("//owl:Module_enseignement/@rdf:ID");
xp.addNamespace("owl", "http://www.owl-ontologies.com/Ontology1265893389.owl#");
xp.addNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
for(Attribute B : (List)xp.selectNodes(racine)){
System.out.println(B.getValue());
}
XPath xpa = XPath.newInstance("//owl:Module_enseignement/owl:aborde/@rdf:resource");
xpa.addNamespace("owl", "http://www.owl-ontologies.com/Ontology1265893389.owl#");
xpa.addNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
 
for(Attribute a : (List)xpa.selectNodes(racine)){
System.out.println(a.getValue());
}
}catch (JDOMException e ){}

}catch(Exception e){
e.printStackTrace();
}
}


est ce que t'a une idée ?peux tu m'aider ?
merci d'avance?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 juin 2010 à 11:58
Salut,

Si tu arrive à récupérer tes données, il te suffit de les stocker dans une LinkedList par exemple au lieu de les afficher sur la sortie standard, je vois pas où est la difficulté.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
linaing Messages postés 27 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 26 mai 2011
17 juin 2010 à 13:04
salut merci DARKSIDIOUS oui je comprend mais s'il te plais est ce que tu peux me donner un exemple pour faire ça et pour récupérer le contenu du tableau dans un combobox.
merci d'avance.
0
Rejoignez-nous