Пример #1
0
static int  parseBody(Resolver * const me, xmlNodePtr cur)
{
        xmlChar *key;
        if ((!xmlStrcmp(cur->name, (const xmlChar *)"message")))
        {
                key = xmlGetProp(cur, (const xmlChar *)"code");
                printf("\tcode:%s\n", key);
                 /*������code�Ƿ�һ�£������������*/
                if (CheckGatewayCode(key) != 0)
                {
                        me->CMTID = -1; 
			PrintfRed("getway code error!");
                        XmlFree(key);
                        return -1;
                }
                me->CMTID = 0;
                XmlFree(key);
                cur = cur->xmlChildrenNode;
                while (cur != NULL)
                {   
                        if ((!xmlStrcmp(cur->name, (const xmlChar *)"config")))/*�������*/                
                        {
                                printf("%s:\n", cur->name);
                                
                                deviceMgmt->deletesensorconfig(deviceMgmt, UF_STATUS);
                                deviceMgmt->deletezigbeeconfig(deviceMgmt);
                                parseDevice(me, cur);
                                deviceMgmt->disablecom(deviceMgmt);
   
                        }
                        else if ((!xmlStrcmp(cur->name, (const xmlChar *)"control")))
                        {
                                printf("%s:\n", cur->name);
                                key = xmlGetProp(cur, (const xmlChar *)"action");
                                printf("action:%s\n", key);
                                XmlFree(key);
                                key = xmlGetProp(cur, (const xmlChar *)"cid");
                                printf("cid:%s\n", key);
                                XmlFree(key);
                                key = xmlGetProp(cur, (const xmlChar *)"object");
                                printf("object:%s\n", key);
                                XmlFree(key);
                                
                        }
                        cur = cur->next;
                }
        }
        
        return -1;
}
Пример #2
0
void parseDevices(xmlDocPtr doc, xmlNodePtr cur) {
  cur = cur->xmlChildrenNode;
  while (cur != NULL) {
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"device"))) {
      control = g_malloc(sizeof(Controller_info));
      control->serial = atoi(g_strdup((const char *) xmlGetProp(cur, BAD_CAST "id")));
      control->name = g_strdup((const char *) xmlGetProp(cur, BAD_CAST "name"));
      control->def = xmlStrEqual(xmlGetProp(cur, BAD_CAST "default"), (const xmlChar *)"yes") ? TRUE : FALSE;
      control->config = FALSE;
      if (!control->serial)
        control->filename = g_strdup("/dev/stdin");
      else
        control->filename = g_strdup("");
      printf("Device 0x%08x : %s (%s) (%s)\n", control->serial, control->name, (control->def)?"yes":"no", control->filename);
      parseDevice(doc, cur);
      devices = g_list_append(devices, control);
      if (control->def)
        default_control = control;
    }
    cur = cur->next;
  }
}