bool getStrFromXML(char *xmlName,char *strVal,char *strOut)
{
char xmltmp[128];
S_XMLTREE *xml;
S_XMLNODE *pnode1;
memset(xmltmp,0x00,sizeof(xmltmp));
sprintf(xmltmp,"%s/xmlfile/%s",getenv("WORKDIR"),xmlName); //xmlName*.xml
xml=s_crxmltree(xmltmp);
if(xml==NULL)
{
writelog(LOG_ERR,"%s,%d,client %s error",__FILE__,__LINE__,xmlName);
return 0;
}
pnode1=s_locxmlnode(xml,strVal);//strVal= .ODI.SERVER.REMOTE.PORT
if(pnode1!=NULL)
{
sprintf(strOut,"%s",pnode1->value);
}else{
writelog(LOG_ERR,"%s,%d,client get port error",__FILE__,__LINE__);
return 0;
}
return 1;
}
int getIntFromXML(char *xmlName,char *strVal)
{
int iOut=0;
char xmltmp[128];
S_XMLTREE *xml;
S_XMLNODE *pnode1;
memset(xmltmp,0x00,sizeof(xmltmp));
sprintf(xmltmp,"%s/xmlfile/%s",getenv("WORKDIR"),xmlName); //xmlName*.xml
xml=s_crxmltree(xmltmp);
if(xml==NULL)
{
writelog(LOG_ERR,"%s,%d,client %s error",__FILE__,__LINE__,xmlName);
return iOut;
}
pnode1=s_locxmlnode(xml,strVal);//strVal= .ODI.SERVER.REMOTE.PORT
if(pnode1!=NULL)
{
iOut=strtol(pnode1->value,NULL,0);
}else{
writelog(LOG_ERR,"%s,%d,client get port error",__FILE__,__LINE__);
return iOut;
}
return iOut;
}
使用方法如下:
1:char类型
/*xml解析IP和端口信息*/
char portno[128];
char strIP[128];
memset(portno,0x00,sizeof(portno));
memset(portno,0x00,sizeof(strIP));
int iRet=getStrFromXML("config.xml",".ODI.SERVER.REMOTE.PORT",portno);
if(!iRet)
{
writelog(LOG_ERR,"%s,%d,client get port from xml error",__FILE__,__LINE__);
exit(1);
}
iRet=getStrFromXML("config.xml",".ODI.SERVER.REMOTE.IP",strIP);
if(!iRet)
{
writelog(LOG_ERR,"%s,%d,client get IP from xml error",__FILE__,__LINE__);
exit(1);
}
2:int 类型
//xml解析 获取链接client最大数量
int maxcnt=0;
maxcnt=getIntFromXML("config_server.xml",".WAF.NOD.MAXCNT");
if(!maxcnt)
{
writelog(LOG_ERR,"%s,%d,[server]:config_server.xml获取MAXCNT error!",__FILE__,__LINE__);
exit(1);
}
else
writelog(LOG_INFO,"config_server.xml获取MAXCNT:%d\n",maxcnt);