📄 xmlepg.cpp
字号:
// XmlEPG.cpp: implementation of the XmlEPG class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <string.h>
#include "XmlEPG.h"
#include "ChineseCodeLib.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
const char *xmlDocTemplate =
"<?xml version=\"1.0\" standalone='no' encoding='UTF-8'>"
"<!-- EPG XML DOCUMENT -->"
"<EPG>"
"<FASTLIST></FASTLIST>"
"<CUR_PRG_INFO></CUR_PRG_INFO>"
"<BOOKED></BOOKED>"
"</EPG>";
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
XmlEPG::XmlEPG(const char* docName)
{
m_doc = TiXmlDocument( docName );
}
XmlEPG::~XmlEPG()
{
}
XML_ERROR_T XmlEPG::XmlDocInit()
{
m_doc.Clear();
m_doc.Parse( xmlDocTemplate );
if ( m_doc.Error() )
return XML_ERROR_COMM;
else
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlLoad(const char *fileName)
{
bool loadOkay;
loadOkay = m_doc.LoadFile(fileName);
if ( !loadOkay )
return XML_ERROR_COMM;
else
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlWriteFile(const char *fileName)
{
bool saveOkay;
if(fileName != NULL)
{
saveOkay = m_doc.SaveFile(fileName);
if(!saveOkay)
return XML_ERROR_COMM;
}
else
{
saveOkay = m_doc.SaveFile();
if(!saveOkay)
return XML_ERROR_COMM;
}
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_NET_INFO(NET_INFO info,
const char* labelname,
const char* disname)
{
TiXmlElement *element;
TiXmlElement NetInfo( labelname );
element = m_doc.FirstChildElement( disname );
if( element == NULL )
{
return XML_ERROR_COMM;
}
NetInfo.SetAttribute( "iNetId", info.iNetId );
NetInfo.SetAttribute( "acNetworkName", info.acNetworkName );
NetInfo.SetAttribute( "iPhyChannelNumber", info.iPhyChannelNumber );
NetInfo.SetAttribute( "iFirstPhyIndex", info.iFirstPhyIndex );
NetInfo.SetAttribute( "iPhyNumWhenSearch", info.iPhyNumWhenSearch );
NetInfo.SetAttribute( "uiCrc", info.ucflag );
NetInfo.SetAttribute( "ucCrc", info.ucCrc );
element->InsertEndChild( NetInfo );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_PHYSICAL_INFO(PHYSICAL_CHANNAL info,
const char* labelname,
const char* disname)
{
TiXmlElement *element;
TiXmlElement PhysicalInfo( labelname );
element = m_doc.FirstChildElement( "EPG" );
element = element->FirstChildElement( disname );
if( element == NULL )
{
return XML_ERROR_COMM;
}
PhysicalInfo.SetAttribute( "iTsId", info.iTsId );
PhysicalInfo.SetAttribute( "iNetInfoAddress", info.iNetInfoAddress );
PhysicalInfo.SetAttribute( "dwFrequency", info.dwFrequency );
PhysicalInfo.SetAttribute( "dwRateOfSym", info.dwRateOfSym );
PhysicalInfo.SetAttribute( "byQamStyle", info.byQamStyle );
PhysicalInfo.SetAttribute( "iProgramNum", info.iProgramNum );
PhysicalInfo.SetAttribute( "iNextChannel", info.iNextChannel );
PhysicalInfo.SetAttribute( "iFirstProIndex", info.iFirstProIndex );
PhysicalInfo.SetAttribute( "iLastProIndex", info.iLastProIndex );
PhysicalInfo.SetAttribute( "iSerNumWhenSearch", info.iSerNumWhenSearch );
PhysicalInfo.SetAttribute( "ucFlag", info.ucFlag );
element->InsertEndChild( PhysicalInfo );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_DIGITAL_INFO(DIGITAL_PGROGRAM info,
const char* labelname,
const char* disname)
{
TiXmlElement *element = XmlLocate( disname );
TiXmlElement DigitalInfo( labelname );
CChineseCodeLib chs;
string name;
if( element == NULL )
{
return XML_ERROR_COMM;
}
DigitalInfo.SetAttribute( "ProgramId", info.ProgramId );
DigitalInfo.SetAttribute( "PrgLogicNum", info.PrgLogicNum );
DigitalInfo.SetAttribute( "stProgNo", info.stProgNo );
DigitalInfo.SetAttribute( "iPhyAddress", info.iPhyAddress );
DigitalInfo.SetAttribute( "iPrevProgramIndex", info.iPrevProgramIndex );
DigitalInfo.SetAttribute( "iNextProgramIndex", info.iNextProgramIndex );
chs.GB2312ToUTF_8( name, info.cServiceName, SERVEICE_NAME_LENGTH );
DigitalInfo.SetAttribute( "cServiceName", name.c_str() );
DigitalInfo.SetAttribute( "flag", info.flag );
DigitalInfo.SetAttribute( "ucSpecialFlag", info.ucSpecialFlag );
DigitalInfo.SetAttribute( "ucSoundValue", info.ucSoundValue );
DigitalInfo.SetAttribute( "ucServiceType", info.ucServiceType );
DigitalInfo.SetAttribute( "vid_pid", info.vid_pid );
DigitalInfo.SetAttribute( "aud_pid", info.aud_pid );
DigitalInfo.SetAttribute( "pcr_pid", info.pcr_pid );
DigitalInfo.SetAttribute( "pmt_pid", info.pmt_pid );
element->InsertEndChild( DigitalInfo );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_EPG_PROGRAM(EPGPROGRAM info,
const char* labelname,
const char* disname)
{
TiXmlElement *element = XmlLocate( disname );
TiXmlElement EPGPrgInfo( labelname );
CChineseCodeLib chs;
string name;
if( element == NULL )
{
return XML_ERROR_COMM;
}
EPGPrgInfo.SetAttribute( "wProgID", info.wProgID );
EPGPrgInfo.SetAttribute( "TSID", info.TSID );
EPGPrgInfo.SetAttribute( "ServiceID", info.ServiceID );
EPGPrgInfo.SetAttribute( "duration", info.duration );
EPGPrgInfo.SetAttribute( "dwStart", info.dwStart );
EPGPrgInfo.SetAttribute( "cType", info.cType );
EPGPrgInfo.SetAttribute( "cAge", info.cAge );
chs.GB2312ToUTF_8( name, info.szProgName, strlen(info.szProgName) );
EPGPrgInfo.SetAttribute( "szProgName", name.c_str() );
chs.GB2312ToUTF_8( name, info.strContent, strlen(info.strContent) );
EPGPrgInfo.SetAttribute( "strContent", name.c_str() );
element->InsertEndChild( EPGPrgInfo );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_FASTLIST(ProgramIndex info,
const char* disname)
{
TiXmlElement *element = XmlLocate( disname );
const char* labelname = NULL;
char temp1[3];
switch( info.pType )
{
case Broadcast_Type:
labelname = "F_Broadcast_Type";
break;
case Video_Type:
labelname = "F_Video_Type";
break;
case Stock_Type:
labelname = "F_Stock_Type";
break;
case SKY_NVOD_TYPE:
labelname = "F_SKY_NVOD_TYPE";
break;
default:
labelname = "INVALID_TYPE";
}
TiXmlElement PrgInd( labelname );
if( element == NULL )
{
return XML_ERROR_COMM;
}
PrgInd.SetAttribute( "pType", info.pType );
PrgInd.SetAttribute( "totalNum", info.totalNum );
for( int i = 0; i < info.totalNum; i++ )
{
char temp2[20] = "dgtAddr";
_itoa( i + 1, temp1, 10 );
strcat( temp2, temp1 );
PrgInd.SetAttribute( temp2, info.dgtAddr[i] );
}
element->InsertEndChild( PrgInd );
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_CURPRG_INFO(Cur_Prg_Info info,
const char* disname)
{
TiXmlElement *element = XmlLocate( disname );
const char* labelname = NULL;
if( element == NULL )
{
return XML_ERROR_COMM;
}
element->SetAttribute( "ProgramType", info.ProgramType );
element->SetAttribute( "prePrgType", info.prePrgType );
for( int i = 0; i < 2; i++ )
{
switch( i )
{
case Broadcast_Type:
labelname = "C_Broadcast_Type";
break;
case Video_Type:
labelname = "C_Video_Type";
break;
case Stock_Type:
labelname = "C_Stock_Type";
break;
case SKY_NVOD_TYPE:
labelname = "C_SKY_NVOD_TYPE";
break;
default:
labelname = "INVALID_TYPE";
}
TiXmlElement CurPrgInfo( labelname );
CurPrgInfo.SetAttribute( "iPreChl", info.iPreChl[i] );
CurPrgInfo.SetAttribute( "iCurChl", info.iCurChl[i] );
CurPrgInfo.SetAttribute( "iProgramAddress", info.curPrg[i].iProgramAddress );
CurPrgInfo.SetAttribute( "muteFlag", info.curPrg[i].muteFlag );
element->InsertEndChild( CurPrgInfo );
}
return XML_SUCCESS;
}
XML_ERROR_T XmlEPG::XmlADD_BOOKED_EVENT(BOOKED_EVENT info, const char* labelname,
const char* disname)
{
TiXmlElement *element = XmlLocate( disname );
TiXmlElement Booked_Evt( labelname );
CChineseCodeLib chs;
string name;
if( element == NULL )
{
return XML_ERROR_COMM;
}
Booked_Evt.SetAttribute( "dt", info.dt );
Booked_Evt.SetAttribute( "duration", info.duration );
Booked_Evt.SetAttribute( "evtId", info.evtId );
Booked_Evt.SetAttribute( "srvId", info.srvId );
Booked_Evt.SetAttribute( "tsId", info.tsId );
Booked_Evt.SetAttribute( "type", info.type );
Booked_Evt.SetAttribute( "nvodRefSrvId", info.nvodRefSrvId );
chs.GB2312ToUTF_8( name, info.Name, strlen(info.Name) );
Booked_Evt.SetAttribute( "Name", name.c_str() );
element->InsertEndChild( Booked_Evt );
return XML_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -