Я совершенно не знаком с XML, libxml и xpath. Поэтому я хотел бы разобрать очень простое выражение XMLlibxml: xpath не найден?
<count>
<active type="integer">1</active>
</count>
Я хочу, чтобы получить значение 1. Я написал следующий код, который использует LibXML (этот код содержит Objective 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();
It получается, что выход этого кода равен
nodeSetPtr is null
Так что меня смущает. Я проверил онлайн-оценщик xpath на xml выше и выражение xpath «count/active/text()» return 1.
Что я здесь делаю неправильно?