All pastes #794830 Raw Edit

Someone

public c v1 · immutable
#794830 ·published 2007-11-23 13:22 UTC
rendered paste body
#include <libxml/parser.h>#include <libxml/xpath.h>xmlXPathObjectPtr _getXPath(xmlDocPtr doc, xmlChar *xpath);int main(int argc, char **argv) {  char *docname;  xmlDocPtr doc;  xmlNodeSetPtr nodeset;  xmlXPathObjectPtr result;  xmlXPathObjectPtr psXPathTmp;  char *pszRequest;  xmlChar *pszService;  xmlChar *pszVersion;  int i;  xmlChar *pszTmp;  if (argc <= 1) {    printf("Usage: %s <file>\n", argv[0]);    return(0);  }  /* load document */  docname = argv[1];  doc = xmlParseFile(docname);  if (doc == NULL ) {    fprintf(stderr,"Document not parsed successfully. \n");    return 1;  }  /* check for request */  result = _getXPath(doc, (xmlChar *)"/GetCapabilities");  if (result) {    pszRequest = "GetCapabilities";    printf("request = GetCapabilities\n");    /* check for service */    psXPathTmp = _getXPath(doc, (xmlChar *)"/GetCapabilities/@service");    if (psXPathTmp) {      nodeset = psXPathTmp->nodesetval;      pszService = xmlNodeListGetString(doc, nodeset->nodeTab[0]->xmlChildrenNode, 1);      printf("service = %s\n", pszService);      xmlFree(pszService);    }    xmlXPathFreeObject (psXPathTmp);    /* check for version */    psXPathTmp = _getXPath(doc, (xmlChar *)"/sos:GetCapabilities/@version");    if (psXPathTmp) {      nodeset = psXPathTmp->nodesetval;      pszVersion = xmlNodeListGetString(doc, nodeset->nodeTab[0]->xmlChildrenNode, 1);      printf("version = %s\n", pszVersion);      xmlFree(pszVersion);    }    xmlXPathFreeObject (result);    xmlXPathFreeObject (psXPathTmp);  }  xmlFreeDoc(doc);  xmlCleanupParser();  return;}xmlXPathObjectPtr _getXPath(xmlDocPtr doc, xmlChar *xpath){  xmlXPathContextPtr context;  xmlXPathObjectPtr result;  /* load document */  context = xmlXPathNewContext(doc);  if (context == NULL) {    printf("Error in xmlXPathNewContext\n");    return NULL;  }  /* register namespaces */  if(xmlXPathRegisterNs(context, "sos", "http://www.opengis.net/sos/1.0") != 0) {      printf("Couldn't register namespace\n");      return;  }  result = xmlXPathEvalExpression(xpath, context);  xmlXPathFreeContext(context);  if (result == NULL) {    printf("Error in xmlXPathEvalExpression\n");    return NULL;  }  if(xmlXPathNodeSetIsEmpty(result->nodesetval)){    xmlXPathFreeObject(result);    /*printf("No result\n");*/    return NULL;  }  return result;}