XML et XPath

Résolu
cs_blueangel Messages postés 69 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 19 mars 2009 - 4 oct. 2006 à 12:09
cs_blueangel Messages postés 69 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 19 mars 2009 - 4 oct. 2006 à 13:07
Bonjour,

ma question porte sur xml et xpathnavigator. j'ai un flux xml dont voici la forme suivante:

<RESULTAT>

    <node>

        <DATE_ANNE>2000</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC120</NOM>

    </node>

    <node>

        <DATE_ANNE>2000</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC121</NOM>

    </node>

    <node>

        <DATE_ANNE>2000</MVT_DATE>

        <TYPE>T</TYPE>

        <NOM>EPAC122</NOM>

    </node>

    <node>

        <DATE_ANNE>2001</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC123</NOM>

    </node>

    <node>

        <DATE_ANNE>2001</MVT_DATE>

        <TYPE>O</TYPE>

        <NOM>EPAC124</NOM>

    </node>

    <node>

        <DATE_ANNE>2002</MVT_DATE>

        <TYPE>P</TYPE>

        <NOM>EPAC125</NOM>

    </node>

    <node>

        <DATE_ANNE>2002</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC126</NOM>

    </node>

    <node>

        <DATE_ANNE>2002</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC127</NOM>

    </node>

<RESULTAT>

je veux séléctionner tous les noeuds de l'anné 2000 et qui ont pour
type I j'ai lu dans article qu'on pouvait faire la séléction suivante

    string xPathquery="/RESULTAT/node/DATE_ANNE='2006' AND TYPE='I'";

    XmlNodeList nodeList = doc.SelectNodes(xpathQuery);

je veux avoir une liste de cette forme

<RESULTAT>

    <node>

        <DATE_ANNE>2000</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC120</NOM>

    </node>

    <node>

        <DATE_ANNE>2000</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC121</NOM>

    </node>

    <node>

        <DATE_ANNE>2001</MVT_DATE>

        <TYPE>I</TYPE>

        <NOM>EPAC123</NOM>

    </node>

..............


mais ça ne marche pas est ce qu'on peut m'expliquer si c'est possible
de faire ce genre de requete en xPath et comment ça fontionne?

Merci d'avance.

blueangel13

4 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 oct. 2006 à 12:45
Ben dans le code que tu as copié en haut, je regrette mais le fichier n'est pas (du tout) valide.
Pour la requête XPath, elle devrait plutôt ressembler à quelque chose comme ceci :

string xPathquery =
"RESULTAT/node[(DATE_ANNE=2000) and (TYPE='I')]";

Ha oui, tant que j'y suis, année s'écrit avec deux 'e'...

<hr size="2" />VC# forever
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 oct. 2006 à 12:30
Salut,
Ca vient peut-être du fait que ton fichier xml n'est pas valide : la balise <RESULTAT> n'est pas fermée et toutes les balises DATE_ANNE sont fermées avec </MVT_DATE>

<hr size="2" />VC# forever
0
cs_blueangel Messages postés 69 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 19 mars 2009
4 oct. 2006 à 12:39
si le flux est correcte

 <RESULTAT>

<NODE>

...

<DATE_ANNE>2000</DATE_ANNE>

...

<NODE>

</RESULTAT>
quand je charge le flux dans un document xml ça marche mais c'est la sélétion avec des critére qui ne marche pas.

le but est en faite de faire un requete sur un flux XML!!
blueangel13
0
cs_blueangel Messages postés 69 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 19 mars 2009
4 oct. 2006 à 13:07
merci ça marche !!
blueangel13
0
Rejoignez-nous