问题描述
我正在尝试使用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 (将#修改为@)