|
Started by lord.bobob, Apr., 05 2006 6:23 PM - 5 replies |
| |
| | | |
|
| |
Posted on April, 05 2006 - 6:23 PM |
Bonjour a tous, voila en fait j'ai un petit problème avec le traitement de mon fichier XML. Plus précisément je des problèmes ma recherche dans le fichier XML. En fait mon problème c'est lorsque l'on fait une recherche, on tombe sur la balise qui contient l'élément rechercher (je recherche une valeur), lorsque l'on fait un XMLSuivant("docXML"), on arrive alors sur la balise suivante contenant la valeur demandé. Je me demande donc comment faire pour avoir les informations qui sont autour de la balise trouvé.
Typiquement, c'est un fichier XML qui décrit un carnet d'adresse, je recherche une adresse qui contient "impasse des oliviers", je fait donc la commande:
XMLRecherche("ContactXML", sCritere, XMLValeur, XMLCommencePar + XMLContient + XMLIgnoreLaCasse) TANTQUE XMLTrouve("ContactXML") //traitement // resultat suivant XMLSuivant("ContactXML") FIN
mais comment faire pour connaitre les valeurs des trois balises au dessus de balise resultat et continuer ensuite la recherche ?
merci par avance. Jim |
| |
| |
| | | |
|
| | |
| |
Posted on April, 05 2006 - 7:10 PM |
En réponse au message :
Bonjour a tous, voila en fait j'ai un petit problème avec le traitement de mon fichier XML. Plus précisément je des problèmes ma recherche dans le fichier XML. En fait mon problème c'est lorsque l'on fait une recherche, on tombe sur la balise qui contient l'élément rechercher (je recherche une valeur), lorsque l'on fait un XMLSuivant("docXML"), on arrive alors sur la balise suivante contenant la valeur demandé. Je me demande donc comment faire pour avoir les informations qui sont autour de la balise trouvé.
Typiquement, c'est un fichier XML qui décrit un carnet d'adresse, je recherche une adresse qui contient "impasse des oliviers", je fait donc la commande:
XMLRecherche("ContactXML", sCritere, XMLValeur, XMLCommencePar + XMLContient + XMLIgnoreLaCasse) TANTQUE XMLTrouve("ContactXML") //traitement
// resultat suivant XMLSuivant("ContactXML") FIN
mais comment faire pour connaitre les valeurs des trois balises au dessus de balise resultat et continuer ensuite la recherche ?
merci par avance. Jim
Concrètement, si j'ai bien compris, tu cherches à avoir des informations comme les nom, prénom et numéro de téléphones des personnes vivant "Impasse des oliviers".
Si c'est ça, alors tu peux tout simplement remonter à la balise parent dont les fils contiennent les infos que tu veux. Je m'explique :
Si la structure de ton fichier est du type
<balise1> <balise2> <contact id=1> <nom>blabla</nom> <prenom>truc</prenom> <telephone>00 00 00 00 00</telephone> <adresse>impasse des oliviers</adresse> </contact> ... </balise2> ... </balise1>
Pour récupérer blabla, truc et 00 00 00 00 00 une fois que tu as trouvé "impasse des oliviers", fais :
XMLParent("ContactXML") // Tu te retrouves alors à la balise <contact id=1> XMLFils("ContactXML") // Te voilà sur la balise Nom XMLSuivant("ContactXML") // Te voilà sur la balise prenom XMLSuivant("ContactXML") // Te voilà sur la balise telephone
J'espère t'avoir aidé. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 05 2006 - 7:55 PM |
oui ok je suis d'accord, mais apres pour avoir la suite de la recherche ? c'est la que je bloque. parce que normalement pour continuer la recherche on utilise XMLSuivant(...). Or comme on l'utilise pour avoir les informations tel que le nom, prenom et autre. il y est alors impossible de voir le reste des resultats de la recherche. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 06 2006 - 12:25 AM |
Ci-dessous le code que j'utilise pour récupérer un document xml et le planquer dans une table. Ici, je récupère tous les enregistrements.
Pour effectuer une sélection, je crois que tu peux procéder de 2 manières: 1. Récupérer tous les enregistrements dans une table 1; ensuite, la parcourir et ajouter dans une table 2 les éléments qui répondent au critère voulu. 2. Te positionner sur la balise à examiner et, si elle convient, te repositionner au début de l'enregistrement et récupérer ses données. Si elle ne convient pas, tu passes à l'enregistrement suivant.
Structure xml (8 infos): <ListeEleves> -<Nom>ABDULI</Nom> -<Prénom>BLERIM</Prénom> -<Matr.>2928</Matr.> -<Impl.>B</Impl.> -<Année>M2</Année> -<Né_e_le>20/02/2001</Né_e_le> -<Sexe>M</Sexe> -<Validée>Non</Validée> </ListeEleves>
Code: Sourcexml=fChargeTexte("C:\aaa\DonneesXml") SI SansEspace(Sourcexml)<>"" ALORS -SI XMLDocument("DocXML", Sourcexml)ALORS --XMLRacine("DocXML") --XMLRecherche("DocXML","ListeEleves", XMLBalise ) --Ct=1 --TANTQUE XMLTrouve("DocXML") ---XMLFils("DocXML") ---TableAjoute(TABLE) // Enregistrement vide ---POUR Ct2=1 A 8 ----Source=XMLDonnée("DocXML") ----SELON Ct2 -----CAS 1: TABLE.NOM[Ct]=Source -----CAS 2: TABLE.PRENOM[Ct]=Source -----CAS 3: TABLE.NUMEROMAT[Ct]=Source -----CAS 4: TABLE.IMPLANTATION[Ct]=Source -----CAS 5: TABLE.ANNEE[Ct]=Source -----CAS 6: TABLE.DATENAISSANCE[Ct]=Source -----CAS 7: TABLE.SEXE[Ct]=Source -----CAS 8: TABLE.VALIDE[Ct]=Source ----FIN ----XMLSuivant("DocXML") ---FIN ---Ct++ ---XMLParent("DocXML") ---XMLSuivant("DocXML") --FIN --XMLTermine("DocXML") -SINON --Erreur("Impossible de créer le document xml") -FIN SINON -Erreur("Impossible de charger le document xml") FIN |
| |
| |
| | | |
|
| | |
| |
Posted on April, 06 2006 - 11:50 AM |
le truc c'est que moi je récupére, les informations d'une balise qui n'est pas la premiere. en gros, en prenant un carnet d'adresse, avec comme architecture:
<repertoire> -<contact id="1"> --<nom>a</nom> --<prenom>a</prenom> --<tel1>tel1</tel1> --<tel2>tel2</tel2> -</contact> - -</contact id="2"> --<nom>b</nom> --<prenom>b</prenom> --<tel1>tel3</tel1> --<tel2>tel4</tel2> -</contact> <repertoire>
donc quand je fais une recherche. et que tombe sur la balise <tel2>, j'aimerais pouvoir afficher le nom et prénom correspondant, et ensuite continuer ma recherche. mais je ne sais pas faire les deux en meme temps. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 06 2006 - 3:50 PM |
En réponse au message :
le truc c'est que moi je récupére, les informations d'une balise qui n'est pas la premiere. en gros, en prenant un carnet d'adresse, avec comme architecture:
- --a --a --tel1 --tel2 - - - --b --b --tel3 --tel4 -
donc quand je fais une recherche. et que tombe sur la balise , j'aimerais pouvoir afficher >le nom et prénom correspondant, et ensuite continuer ma recherche. mais je ne sais pas >faire les deux en meme temps.
Tu as essayé d'utiliser le paramètre XMLContinue dans ta procédure XMLRecherche ? |
| |
| |
| | | |
|
| | | | |
| | |
|