⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlepg.cpp

📁 生成关于EPG的XML文档工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:

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 + -