1
A
回答
4
您可以使用libxml編譯XPath表達式而不對其進行評估。見xmlXPathCompile。無效表達式的返回值應爲NULL。
#include <stdio.h>
#include <libxml/xpath.h>
#include <libxml/xmlerror.h>
void
handle_structured_error(void *userdata, xmlErrorPtr err)
{
printf("%s", err->message);
}
int
main(int argc, char **argv)
{
if (argc < 2)
return 1;
const char *expr = argv[1];
xmlXPathContextPtr ctx = xmlXPathNewContext(NULL);
xmlSetStructuredErrorFunc(ctx, &handle_structured_error);
xmlXPathCompExprPtr p = xmlXPathCtxtCompile(ctx, (xmlChar *)expr);
if (p) {
printf("Valid: %s\n", expr);
xmlXPathFreeCompExpr(p);
} else {
printf("Invalid: %s\n", expr);
}
xmlXPathFreeContext(ctx);
return 0;
}
如何向用戶顯示描述如何在返回NULL時解決問題的消息? 使用xmlXPathEvalExpression時,將打印一條錯誤消息,顯示語法不正確的位置。 – user128026 2009-08-19 00:16:10
請記住,我不能使用xmlXPathEvalExpression,因爲在程序 – user128026 2009-08-19 00:17:00
的這一階段沒有xmlXPathContext請參閱我的答案:使用xmlXPathCompile,而不是xmlXPathEvalExpression。你根本不需要一個xmlXPathContext。 – p00ya 2009-08-19 03:10:13