0

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;
}

結果は

住所録

名前

住所

ジップ

電話


おそらくxmlCharとcharのため、「city」と等しくありません。nodename と char を比較するにはどうすればよいですか?

4

1 に答える 1

1

convert(cur_node)==c文字列の内容を比較するのではなく、ポインターを比較しています。これは、C++ で文字列を比較する方法ではありません。

strncmp を使用して 2 つを比較してみてください。

http://www.cplusplus.com/reference/cstring/strncmp/

于 2012-12-27T01:22:08.757 に答える