Xpath 为什么libxml2不返回任何结果
我有一个我正试图用xmllib2解析的wsdl。这是一个周五的下午,但我不明白为什么它不起作用,特别是因为: 我已经注册了名称空间。 我使用的是经过验证的wsdl。 我的XPath在别处工作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
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”;//这能回答您的问题吗?