• # exemple libxml2/xpath

    Posté par (page perso) . Évalué à 2.

    L'exemple http://xmlsoft.org/examples/xpath1.c(...) fait 250 lignes, oui, mais tu n'as peut-être pas besoin de tout cela. Déjà, si ton XML n'utilise pas de namespace, ça raccourcit de beaucoup.
    
    
    Quelque chose minimaliste, qui parse t.xml et affiche les noeuds "matchant" l'expression xpath "//elem" pourrait ressembler à:
    (il faut quand même y ajouter une petite gestion des erreurs)
    
    
    #include <libxml/tree.h>
    #include <libxml/xpath.h>
    
    int main(int argc, char *argv[])
    {
            xmlDoc *doc;
            xmlXPathContext *ctx;
            xmlXPathObject *xpathObj;
            xmlNode *node;
            int i, n;
    
            doc = xmlParseFile("t.xml");
            ctx = xmlXPathNewContext(doc);
            xpathObj = xmlXPathEvalExpression("//elem", ctx);
    
            n = xpathObj->nodesetval->nodeNr;
            for (i=0; i<n; i++) {
                    node = xpathObj->nodesetval->nodeTab[i];
                    printf("node: %s\n", node->name);
            }
    
            return 0;
    }
    
    Compile rapide avec gcc t.c -o t `pkg-config --cflags --libs libxml-2.0`
    • [^] # Re: exemple libxml2/xpath

      Posté par . Évalué à 1.

      j'ai bien tester les deux exemples mais j'ai juste
      node:elem
      node:elem

      mais il me faudrait le tags à l'ouverture jusqu'a la fermeture avec le "<elem>blablablalbla</elem>"

      Le truc est que ca fait une librairie de 2 Mo pour juste 15 lignes de code et je trouve que c'est trop.
      Je cherche juste une source qui fait XPath avec un xml que je donne et l'expression.
      J'ai bien essayer de récuperer seulement XPath de libxml2 mais tous est lier l'un dans l'autres.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.