【发布时间】:2012-01-18 22:25:26
【问题描述】:
我对 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
这让我很困惑。我在上面的 xml 上运行了一个在线 xpath 评估器,xpath 表达式“count/active/text()”返回 1。
我在这里做错了什么?
【问题讨论】:
标签: objective-c xml xpath libxml2