Probleme de xpath

Signaler
Messages postés
145
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
-
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

Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
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
Messages postés
145
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
11 mars 2010

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
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Ton fichier est généré par quel outil ?

As tu essayé de le valider avec des outils de validation XML ?
Messages postés
145
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
11 mars 2010

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.
Messages postés
145
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
11 mars 2010

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.
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
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