📄 xmlepg.cpp
字号:
TiXmlElement *XmlEPG::XmlLocate(const char* labelname)
{
int flag = 0;
TiXmlElement* element = NULL;
TiXmlElement* element1 = NULL;
TiXmlElement* element2 = NULL;
TiXmlElement* element3 = NULL;
element = m_doc.FirstChildElement( "EPG" );
for(;;)
{
do
{
element1 = element;
element2 = element1->FirstChildElement( labelname );
if( element2 != NULL )
{
flag = 1;
break;
}
// To check whether the element is in the element3
for( element3 = element1->FirstChildElement();
element3 != NULL; element3 = element3->NextSiblingElement() )
{
element2 = element3->FirstChildElement( labelname );
if( element2 != NULL )
{
flag = 1;
break;
}
}
if( flag == 1 )
{
break;
}
element = element1->NextSiblingElement();
}while( element != NULL );
if( flag == 1 )
{
break;
}
element = element1->FirstChildElement();
if( element == NULL )
{
break;
}
}
return element2;
}
XML_ERROR_T XmlEPG::XmlGETi(const char* labelname,
const char* attriname,
int* iVal)
{
int result;
TiXmlElement* element2 = NULL;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
if( ( element2->Attribute( attriname, &result ) ) == NULL )
{
return XML_ERROR_GET;
}
*iVal = result;
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlGETs(const char* labelname,
const char* attriname,
char* sVal, int lenth)
{
const char* result = NULL;
TiXmlElement* element2 = NULL;
CChineseCodeLib chs;
string name;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
if( ( result = element2->Attribute( attriname ) ) == NULL )
{
return XML_ERROR_GET;
}
chs.UTF_8ToGB2312( name, (char*)result, strlen(result) );
strcpy( sVal, name.c_str() );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlGETAll(const char* labelname,
EPGPROGRAM* Pro)
{
const char* result = NULL;
int temp;
TiXmlElement* element2 = NULL;
CChineseCodeLib chs;
string name;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
element2->Attribute( "cAge", &temp );
Pro->cAge = ( unsigned char )temp;
element2->Attribute( "cType", &temp );
Pro->cType = ( unsigned char )temp;
element2->Attribute( "duration", &temp );
Pro->duration = ( unsigned short int )temp;
element2->Attribute( "dwStart", &temp );
Pro->dwStart = ( unsigned long )temp;
element2->Attribute( "ServiceID", &temp );
Pro->ServiceID = ( unsigned short int )temp;
result = element2->Attribute( "strContent" );
Pro->strContent = ( char* )malloc( CONTENT_LENGTH * sizeof( char ) );
chs.UTF_8ToGB2312( name, (char*)result, strlen(result) );
strcpy( Pro->strContent, name.c_str() );
result = element2->Attribute( "szProgName" );
chs.UTF_8ToGB2312( name, (char*)result, strlen(result) );
strcpy( Pro->szProgName, name.c_str() );
element2->Attribute( "TSID", &temp );
Pro->TSID = ( unsigned short int )temp;
element2->Attribute( "wProgID", &temp );
Pro->wProgID = ( unsigned short int )temp;
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlGETDigChan(const char* labelname, DIGITAL_PGROGRAM* DigChan)
{
const char* result = NULL;
int temp;
TiXmlElement* element2 = NULL;
CChineseCodeLib chs;
string name;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
element2->Attribute( "ProgramId", &temp );
DigChan->ProgramId = ( unsigned short int )temp;
element2->Attribute( "PrgLogicNum", &temp );
DigChan->PrgLogicNum = ( unsigned short int )temp;
element2->Attribute( "stProgNo", &temp );
DigChan->stProgNo = ( unsigned short int )temp;
element2->Attribute( "iPhyAddress", &temp );
DigChan->iPhyAddress = ( unsigned short int )temp;
element2->Attribute( "iPrevProgramIndex", &temp );
DigChan->iPrevProgramIndex = ( unsigned short int )temp;
element2->Attribute( "iNextProgramIndex", &temp );
DigChan->iNextProgramIndex = ( unsigned short int )temp;
element2->Attribute( "flag", &temp );
DigChan->flag = ( unsigned char )temp;
element2->Attribute( "ucSpecialFlag", &temp );
DigChan->ucSpecialFlag = ( unsigned char )temp;
element2->Attribute( "ucSoundValue", &temp );
DigChan->ucSoundValue = ( unsigned char )temp;
element2->Attribute( "ucServiceType", &temp );
DigChan->ucServiceType = ( unsigned char )temp;
element2->Attribute( "vid_pid", &temp );
DigChan->vid_pid = ( unsigned short )temp;
element2->Attribute( "aud_pid", &temp );
DigChan->aud_pid = ( unsigned short )temp;
element2->Attribute( "pcr_pid", &temp );
DigChan->pcr_pid = ( unsigned short )temp;
element2->Attribute( "pmt_pid", &temp );
DigChan->pmt_pid = ( unsigned short )temp;
element2->Attribute( "flag", &temp );
DigChan->flag = ( unsigned char )temp;
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlGETFastList(int* DigAdd, int len, int type)
{
const char* labelname = NULL;
TiXmlElement* element2 = NULL;
char temp1[3];
if( ( DigAdd == NULL ) || ( len <= 0 ) )
{
return XML_ERROR_COMM;
}
if( type == Broadcast_Type )
{
labelname = "F_Broadcast_Type";
}
else if( type == Video_Type )
{
labelname = "F_Video_Type";
}
else
{
return XML_ERROR_COMM;
}
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
for( int i = 0; i < len; i++ )
{
char temp2[20] = "dgtAddr";
_itoa( i + 1, temp1, 10 );
strcat( temp2, temp1 );
element2->Attribute( temp2, &DigAdd[i] );
}
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlMODi(const char* labelname,
const char* attriname,
int iVal)
{
TiXmlElement* element2 = NULL;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
element2->SetAttribute( attriname, iVal );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlMODs(const char* labelname,
const char* attriname,
char* sVal)
{
TiXmlElement* element2 = NULL;
CChineseCodeLib chs;
string name;
if( ( element2 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
chs.GB2312ToUTF_8( name, sVal, strlen(sVal) );
element2->SetAttribute( attriname, name.c_str() );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlDEL(const char* labelname)
{
TiXmlElement* element1 = NULL;
TiXmlElement* element2 = NULL;
if( ( element1 = XmlLocate( labelname ) ) == NULL )
{
return XML_ERROR_COMM;
}
element2 = ( element1->Parent() )->ToElement();
if( element2->RemoveChild( element1 ) == FALSE )
{
return XML_ERROR_DEL;
}
if( m_doc.SaveFile() == FALSE )
{
return XML_ERROR_COMM;
}
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlCOUNT(const char* labelname, int* count, const char** nametag)
{
TiXmlElement* element = XmlLocate( labelname );
TiXmlElement* element1 = NULL;
if( element == NULL )
{
return XML_ERROR_COMM;
}
element1 = element->FirstChildElement();
for( int i = 0; ; i++ )
{
if( element1 == NULL )
{
break;
}
else
{
nametag[i] = element1->Value();
element1 = element1->NextSiblingElement();
}
}
*count = i;
return XML_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -