// 取得Xml元素的值
// itemName:元素名
// buff:查找缓冲区
// return:value字符串
char* XmlPack::getElementValue(char* itemName, char* buff)
{
static char value[64];
int itemLen = strlen(itemName);
char* itemStart = new char[itemLen + 3];
memset(itemStart, '\0', itemLen + 3);
itemStart[0] = '<';
itemStart[itemLen + 1] = '>';
strncpy(itemStart+1*sizeof(char), itemName, itemLen);
char* itemEnd = new char[itemLen + 4];
memset(itemEnd, '\0', itemLen + 4);
itemEnd[0] = '<';
itemEnd[1] = '/';
itemEnd[itemLen + 2] = '>';
strncpy(itemEnd+2*sizeof(char), itemName, itemLen);
char* pos1 = strstr(buff, itemStart);
if(pos1 != NULL)
{
pos1 += strlen(itemStart);
char* pos2 = strstr(pos1, itemEnd);
if(pos2 != NULL)
{
assert((unsigned int)(pos2-pos1)<sizeof(value));
memset(value, '\0', sizeof(value));
strncpy(value, pos1, pos2-pos1);
return value;
}
}
return NULL;
}
// itemName:元素名
// buff:查找缓冲区
// return:value字符串
char* XmlPack::getElementValue(char* itemName, char* buff)
{
static char value[64];
int itemLen = strlen(itemName);
char* itemStart = new char[itemLen + 3];
memset(itemStart, '\0', itemLen + 3);
itemStart[0] = '<';
itemStart[itemLen + 1] = '>';
strncpy(itemStart+1*sizeof(char), itemName, itemLen);
char* itemEnd = new char[itemLen + 4];
memset(itemEnd, '\0', itemLen + 4);
itemEnd[0] = '<';
itemEnd[1] = '/';
itemEnd[itemLen + 2] = '>';
strncpy(itemEnd+2*sizeof(char), itemName, itemLen);
char* pos1 = strstr(buff, itemStart);
if(pos1 != NULL)
{
pos1 += strlen(itemStart);
char* pos2 = strstr(pos1, itemEnd);
if(pos2 != NULL)
{
assert((unsigned int)(pos2-pos1)<sizeof(value));
memset(value, '\0', sizeof(value));
strncpy(value, pos1, pos2-pos1);
return value;
}
}
return NULL;
}