使用libxml2在xml文件中查找节点

Sne*_*min 3 c libxml2 xml-parsing

我正在尝试编写一个函数,它将在xml文件中找到具有指定名称的节点.问题是该函数永远不会找到指定的节点.

xmlNodePtr findNodeByName(xmlNodePtr rootnode, const xmlChar * nodename)
{
    xmlNodePtr node = rootnode;
    if(node == NULL){
        log_err("Document is empty!");
        return NULL;
    }

    while(node != NULL){

        if(!xmlStrcmp(node->name, nodename)){
            return node; 
        }
        else if(node->children != NULL){
            node = node->children; 
            xmlNodePtr intNode =  findNodeByName(node, nodename); 
            if(intNode != NULL){
                return intNode;
            }
        }
        node = node->next;
    }
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

我可以在调试器中看到函数确实深入到子节点但仍然返回NULL.

提前致谢.

Ami*_*yaG 8

else if(node->children != NULL) {
    node = node->children; 
    xmlNodePtr intNode =  findNodeByName(node, nodename); 
    if (intNode != NULL) {
        return intNode;
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该是:

else if (node->children != NULL) {
    xmlNodePtr intNode =  findNodeByName(node->children, nodename); 
    if(intNode != NULL) {
        return intNode;
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常