const char *xml = ha_msg_value(msg, "xml");
xml = ha_msg_value(msg, "xml");
find_xml_in_hamessage(const struct ha_msg* msg){	FNIN();	if (msg == NULL) {		cl_log(LOG_INFO,		       "**** ha_crm_msg_callback called on a NULL message");		FNRET(NULL);	}#if 0	cl_log(LOG_DEBUG, "[F_TYPE=%s]", ha_msg_value(msg, F_TYPE));	cl_log(LOG_DEBUG, "[F_ORIG=%s]", ha_msg_value(msg, F_ORIG));	cl_log(LOG_DEBUG, "[F_TO=%s]", ha_msg_value(msg, F_TO));	cl_log(LOG_DEBUG, "[F_COMMENT=%s]", ha_msg_value(msg, F_COMMENT));	cl_log(LOG_DEBUG, "[F_XML=%s]", ha_msg_value(msg, "xml"));//    cl_log(LOG_DEBUG, "[F_=%s]", ha_msg_value(ha_msg, F_));#endif		if (strcmp("CRM", ha_msg_value(msg, F_TYPE)) != 0) {		cl_log(LOG_INFO, "Received a (%s) message by mistake.",		       ha_msg_value(msg, F_TYPE));		FNRET(NULL);	}	const char *xml = ha_msg_value(msg, "xml");	if (xml == NULL) {		cl_log(LOG_INFO, "No XML attached to this message.");		FNRET(NULL);	}    	xmlDocPtr doc = xmlParseMemory(xml, strlen(xml));	if (doc == NULL) {		cl_log(LOG_INFO, "XML Buffer was not valid.");		FNRET(NULL);	}	xmlNodePtr root = xmlDocGetRootElement(doc);	if (root == NULL) {		cl_log(LOG_INFO, "Root node was NULL.");		FNRET(NULL);	}	FNRET(root);}