我使用g ++和libxml2
static void print_element_names(xmlNode * a_node,xmlDoc * doc) {
xmlNode *cur_node = NULL;
const char *c= "city";
xmlChar *name;
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE) {
std::cout<<convert(cur_node)<<std::endl;
}
if (convert(cur_node)==c){
//work but not equal with city
std::cout<<"Found node"<<std::endl;
}
print_element_names(cur_node->children,doc);
}
}
char * convert(xmlNode * a_node) {
char* a = (char *)a_node->name;
return a;
}
address_book
人
名称
地址
街
城市
状态
拉链
电话
它不等于“城市”也许是因为xmlChar和char。 如何将nodename与char进行比较?
答案 0 :(得分:1)
你的convert(cur_node)==c
正在比较指针而不是比较字符串内容,这不是比较C ++中字符串的方法。
尝试使用strncmp比较两者。