Xpath 为什么libxml2不返回任何结果

Xpath 为什么libxml2不返回任何结果,xpath,libxml2,Xpath,Libxml2,我有一个我正试图用xmllib2解析的wsdl。这是一个周五的下午,但我不明白为什么它不起作用,特别是因为: 我已经注册了名称空间。 我使用的是经过验证的wsdl。 我的XPath在别处工作 static xmlXPathObjectPtr get_type(char * sz_xml, char * sz_op, char * sz_typename, char * sz_nslist){ xmlDocPtr doc; xmlXPathContextPtr xpath

我有一个我正试图用xmllib2解析的wsdl。这是一个周五的下午,但我不明白为什么它不起作用,特别是因为:

我已经注册了名称空间。 我使用的是经过验证的wsdl。 我的XPath在别处工作

static xmlXPathObjectPtr get_type(char * sz_xml, char * sz_op, char * sz_typename, char * sz_nslist){
    
    xmlDocPtr doc;
    xmlXPathContextPtr xpathCtx; 
    xmlXPathObjectPtr xpathObj;
    char * sz_xpath;
    sz_xpath = (xmlChar*) "//xs:element"; //<<<< Using this simple XPath just until I get something working
    //sprintf(sz_xpath, (xmlChar*)"//*types/*/*element[@name='%s']/*/*/*[@name='%s']/@type", sz_op, sz_typename);

    fprintf(stderr, "XPath = %s \n", sz_xpath);

    doc = xmlParseDoc(sz_xml);
    if (doc == NULL) {
        fprintf(stderr, "Error: unable to parse xml\n");
    }

    xpathCtx = xmlXPathNewContext(doc);
    if(xpathCtx == NULL) {
        fprintf(stderr,"Error: unable to create new XPath context\n");
        xmlFreeDoc(doc); 
    }

    if((sz_nslist != NULL) && (register_namespaces(xpathCtx, sz_nslist) < 0)) {
        fprintf(stderr,"Error: failed to register namespaces list \"%s\"\n", sz_nslist);
        xmlXPathFreeContext(xpathCtx); 
        xmlFreeDoc(doc); 
    }

    xpathObj = xmlXPathEvalExpression(sz_xpath, xpathCtx);
    xmlXPathFreeContext(xpathCtx);

    if(xpathObj == NULL) {
        fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", sz_xpath);
        xmlXPathFreeContext(xpathCtx); 
        xmlFreeDoc(doc); 
        return NULL;
    }

    if(xmlXPathNodeSetIsEmpty(xpathObj->nodesetval)){
        xmlXPathFreeObject(xpathObj);
                printf("No result\n");
        return NULL;
    }
    return xpathObj;

}
静态xmlXPathObjectPtr get_类型(char*sz_xml,char*sz_op,char*sz_typename,char*sz_nslist){
xmlDocPtr文件;
xmlXPathContextPtr-xpathCtx;
xmlXPathObjectPtr xpathObj;
char*sz_;

sz_xpath=(xmlChar*)“//xs:element”;//这能回答您的问题吗?