Bonjour à tous,

Je me retrouve dans une petite impasse, et je vous serai ravi que vous m'apportiez un zeste de vos lumières. Voila je dispose d'un fichier Xml décrivant une gallerie video :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?xml version="1.0" encoding="utf-8"?>
<gallery version="2.1">
<video _mngid="1">
    <title>Video #1</title>
    <thumb>
      <url>img#1.jpg</url>
    </thumb>
    <video>
      <stream bitrate="64">
        <url>vid#1.flv</url>
      </stream>
    </video>
</video>
 
<video _mngid="2">
    <title>Video #2</title>
    <thumb>
      <url>img#2.jpg</url>
    </thumb>
    <video>
      <stream bitrate="64">
        <url>vid#2.flv</url>
      </stream>
    </video>
</video>
</gallery>
J'aimerai donc de ce fichier, extraire la valeur de la balise <title> de la video dont la balise <video>/<stream>/<url> vaudrait vid#2.flv par exemple.

J'ai donc écrit ce bout de code en C avec la libxml2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...

xmlXPathObjectPtr xpathres = xmlXPathEvalExpression("//gallery/video/title/text()[../video/stream/url/text()[.='vid#2.flv']]", xpathctx);

if (xpathres && (xpathres->type == XPATH_NODESET))
    {
      for (i = 0; i < xpathres->nodesetval->nodeNr; i++)
        {
          xmlNodePtr n = xpathres->nodesetval->nodeTab[i];
          if (n->type == XML_TEXT_NODE || n->type == XML_CDATA_SECTION_NODE)
              printf("- %s\n", n->content);
        }
    }
  else
      return -1;

...
C'était l'expression Xpath qui me semblait la plus logique (désolé pour mon noobisme en Xpath), mais voila vous l'aurez compris au lieu de ne m'afficher le titre voulu (Video #2), ce code m'affiche la liste de toutes les videos comme si il ne prenait en compte que la premiere partie de la query à savoir : "//gallery/video/title/text()".

Voila donc j'en appelle a votre aide afin de me corriger dans la formulation de cette query.. En esperant avoir été clair.. Merci !