为什么libxml2不返回任何结果

问题描述

我正在尝试使用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;

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)