2011-03-26 4 views
0

Où accède-t-on aux données d'un fichier XML analysé lors de l'utilisation de libxml?Accès aux données XML analysées

Voici un exemple d'utilisation de xmlsoft

exampleFunc(const char *filename) { 
xmlParserCtxtPtr ctxt; /* the parser context */ 
xmlDocPtr doc; /* the resulting document tree */ 

/* create a parser context */ 
ctxt = xmlNewParserCtxt(); 
if (ctxt == NULL) { 
    fprintf(stderr, "Failed to allocate parser context\n"); 
return; 
} 
/* parse the file, activating the DTD validation option */ 
doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID); 
/* check if parsing suceeded */ 
if (doc == NULL) { 
    fprintf(stderr, "Failed to parse %s\n", filename); 
} else { 
/* check if validation suceeded */ 
    if (ctxt->valid == 0) 
    fprintf(stderr, "Failed to validate %s\n", filename); 
/* free up the resulting document */ 
xmlFreeDoc(doc); 
} 
/* free up the parser context */ 
xmlFreeParserCtxt(ctxt); 
} 

Comment est la structure de l'arbre utilisé pour obtenir les données qu'il contient?

Répondre

1

Vous pouvez obtenir vos données de deux façons. Dans le code ci-dessus, vous avez déjà le fichier xml analysé et prêt dans votre variable - doc (qui est du type: xmlDocPtr). En utilisant les fonctions disponibles dans le module xmlDocPtr, vous pouvez parcourir et parcourir votre fichier XML et obtenir les données appropriées. Une autre méthode consisterait à utiliser XPath. La bibliothèque supporte XPath et vous pouvez l'utiliser.

Reportez-vous à cet exemple: xpath1.c. Cela fait usage de xpath pour obtenir des données. Si vous connaissez votre XML, l'utilisation de XPath sera un moyen simple et rapide d'obtenir les données dont vous avez besoin.

+0

Merci. Est-ce que tout ce code doit être utilisé, ou est-il possible d'utiliser simplement l'une des nombreuses fonctions? – jarryd

+0

@ Helium3 .. Je ne connais pas votre xml, ni les données dont vous avez besoin. Vous devrez vous servir de XPath. –