2012-09-25 4 views

답변

0

XPath를 사용하면 쉽습니다. XPath examples을 참조하십시오. 당신이 xmlXPathEvalExpression의 결과를 얻을되면, 당신은 단순히 쓰기 :

xpathObj->nodesetval->nodeNr 

여기에 주어진 XPath syntax입니다. 예를 들어 //elem, 모든 elem 요소를 계산합니다.

그리고 xpath1.c 예에 따라 전체 기능 :

int count(xmlDocPtr doc, const char* path) 
{ 
    int count; 
    xmlXPathContextPtr xpathCtx; 
    xmlXPathObjectPtr xpathObj; 

     /* Create xpath evaluation context */ 
    xpathCtx = xmlXPathNewContext(doc); 
    if(xpathCtx == NULL) { 
     fprintf(stderr,"Error: unable to create new XPath context\n"); 
     return(-1); 
    } 

    /* Evaluate xpath expression */ 
    xpathObj = xmlXPathEvalExpression(path, xpathCtx); 
    if(xpathObj == NULL) { 
     fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", path); 
     xmlXPathFreeContext(xpathCtx); 
     return(-1); 
    } 

    count = xpathObj->nodesetval->nodeNr; 
    printf("count of %s: %d\n", path, count); 

    xmlXPathFreeObject(xpathObj); 
    xmlXPathFreeContext(xpathCtx); 

    return count; 
} 
+1

오히려 // tagName' 및 계산 '에 대한 xpathing보다, 당신은 (// 태그 이름)'수'에 대한 XPath와를 OBJ 확인할 수 있습니다 > floatval. 실행하는 동안 전체 일치 목록을 유지하지 않는 최적화 단계를 수행할지 여부는 알 수 없습니다. –

관련 문제