rapidxml如何判断一个节点有没有子节点

void EveryNode(xml_node<>* node)
{

 cout<<node->name();        

 if (node->value()!= NULL)
 {
     cout<<"\t"<<node->value()<<endl;
 }
 else
 {
     cout<<endl;
 }

 for (xml_attribute<>* attr =node->first_attribute();attr;attr = attr->next_attribute())
 {
     cout<<attr->name()<<":"<<attr->value()<<endl;
 }

 cout<<endl<<endl<<endl<<endl;

 node = node->first_node();   //取第一个子节点
 while(node !=NULL)               //如果子节点存在进入循环
 {
    EveryNode(node);
    node = node->next_sibling();
 }

}

这个程序的功能是递归遍历xml并打印每个节点的信息,问题出现在注释的那两句话,当一个字节点没有子节点的时候,node!=NULL不起作用,程序依然进入while循环,这是怎么回事,怎么才能判断一个节点没有子节点呢?求大神解答

http://codego.net/266541/