Probleme de xpath

neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 - 25 sept. 2008 à 11:48
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 - 29 sept. 2008 à 21:18
Bonjour a tous,
j'essaie de modifier un fichier xml par xpath cependant count me retourne toujours 0 peu importe ce que je cherche

voici le fichier xml:
<Matrix Name="matrix3">
            <MatrixColumns>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn id="ctr">
                <Width>0.07937cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.53968cm</Width>
              </MatrixColumn>
              <MatrixColumn>
                <Width>2.30159cm</Width>
              </MatrixColumn>
            </MatrixColumns>
           

et voici le code :
            XPathDocument xPathDoc = new XPathDocument("c:/logs/adwords.rdlc");
            XPathNavigator xPathNav = xPathDoc.CreateNavigator();
            string xPathExp = "//MatrixColumn[@id='ctr']";
            XPathNodeIterator Nodes = xPathNav.Select(xPathNav.Compile(xPathExp));
            if (Nodes.Count != 0)
            {
                Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché
                /* Encodage des données dans la classe Customer */
               
                Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud
                                                   * enfant "Width" */
                string width = Nodes.Current.Value;
            }
           
Merci d'avance pour votre aide

6 réponses

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
26 sept. 2008 à 08:26
Bonjour,

J'ai testé ton code en prenant ton fragment XML et en le mettant dans un fichier XML : c:\temp\matrix3.xml.
J'ai juste rajouté un tag fermant </Matrix> à la fin.

Puis j'ai changé la ligne : 
XPathDocument xPathDoc = new XPathDocument("c:/logs/adwords.rdlc");
par
XPathDocument

xPathDoc = newXPathDocument(@"c:\temp\matrix3.xml");

Le count est bien égal à 1.

---------------------------------------
Sébastien Roche, architecte .Net
MCP C# 2.0 - MCTS ASP.Net 2.0
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
29 sept. 2008 à 09:20
Salut titeoe et merci de m'aider. (desolé de repondre aussi tard, mais etant malade je n'ai pas pu travailler)
Donc d'apres toi ceci est du a mon fichier xml qui est mal fait plutot qu'a une erreur de code?

Car mon fichier fait 800ko et il est généré automatiquement par Microsoft donc je ne pense pas qu'il y ait un soucis avec le fichier.
De plus j'ai essayé ton idée avec un fichier matrix.xml contenant juste ce que j'ai ecrit et ca fonctionne.

je ne vois pas ce qui peut regler ce probleme
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
29 sept. 2008 à 09:32
Ton fichier est généré par quel outil ?

As tu essayé de le valider avec des outils de validation XML ?
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
29 sept. 2008 à 10:00
mon fichier est un fichier de reporting services réalisé avec visual studio 2008.

et j'ai testé la validation xml et il est validé correctement.
0

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

Posez votre question
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
29 sept. 2008 à 18:40
Finalement je suis passé par xmldocument et ca fonctionne trés bien donc je vais garder cette solution merci de t'être penché sur mon probleme.
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
29 sept. 2008 à 21:18
ok

Attention a XmlDocument car si tu charges ton doc entier en mémoire, gare aux performances, 1 Mo de XML ca commence à peser dnas la balance...

---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
0
Rejoignez-nous