Я совершенно новичок в XML, libxml и xpath.Поэтому я хотел разобрать очень простое выражение XML
<count>
<active type="integer">1</active>
</count>
Я хочу получить значение 1. Я написал следующий код, который использует libxml (этот код содержит объективный код c):
const unsigned char* xPathExp = (const unsigned char*) "count/active/text()";
xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression( xPathExp, xpathCtx);
xmlNodeSetPtr nodeSetPtr = xpathObj->nodesetval;
if( nodeSetPtr != 0 ) {
xmlNode* node = nodeSetPtr->nodeMax > 0 ? nodeSetPtr->nodeTab[0] : 0;
if( node != 0 ) {
NSLog(@"Active Projects = %@", [self stringFromCString:node->name] );
} else {
NSLog(@"Node for xpath Exp: count/active/text() does not exist.");
}
} else
NSLog(@"nodeSetPtr is null");
xmlFreeDoc(doc);
xmlCleanupParser();
Оказывается, что вывод этого кода
nodeSetPtr is null
Так что меня смущает.Я запустил онлайн-оценщик xpath в приведенном выше xml-файле, а выражение xpath "count / active / text ()" вернуло 1.
Что я здесь не так делаю?