|  客服中心  |  合作联系
搜刊网
论文下载
您当前位置
首页 > 论文下载 > 信息科技 > 基于XMl解析技术的IPTV机顶盒应用
基于XMl解析技术的IPTV机顶盒应用
来源:互联网 sk006 | 杜源,张永安,周剑超
【分  类】 信息科技
【关 键 词】 XML解析;IPTV;C语言编程;Linux嵌入式操作系统
【来  源】 互联网
【收  录】 中文学术期刊网
正文:

  摘要:通过实际要求设计了一种可以在嵌入式操作系统中运行的XML解析器,详细分析了其设计过程,给出基于C语言编程实现过程,通过实际检测,证明了其可行性和有效性并以成功应用于IPTV机顶盒

  关键词:XML解析;IPTV;C语言编程;Linux嵌入式操作系统

  1:xml解析技术概述

  XML是extensible markup language的缩写。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。XML (可扩展标识语言)是通用标识语言标准(SGML)的一个子集,它是描述网络上的数据内容和结构的标准。通过解析提取出xml里的数据,再调用相关函数,可以为开发工作节省大量的研发时间,本文应用xml文本在linux系统下设计了IPTV机顶盒界面和里面的流媒体内容,通过解析程序,提取相关数据,最后在普通电视机上播放显示内容,而如要更改界面和流媒体内容,只需更改xml文本文档的内容即可,大大增加可移植性,缩短研发周期。

  2:IPTV 概述

  IPTV即Interactive Personality TV,中文译文交互式网络电视,是一种利用宽带有线电视网,集互联网、多媒体、通讯等多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。其终端可以是PC、电视、便携、手机、车载等移动设备,播放内容包括图文、音乐、影视、游戏等。用户可以根据喜爱,自定义播放节目,实现节目的广播、点播、下载、录制等功能,并且由于IPTV采用MPEG2、MPEG4 PART2、H.264、WMV9编码方式传输数据,使得使用IPTV的用户可以以小带宽(约2M)获得接近于DVD品质的播放画面,自从2005,中国电信与上海文广集团合作在上海推出了中国大陆第一套IPTV业务后,IPTV业务在中国大陆迅猛发展,出现了多家IPTV机顶盒制造商,其机顶盒内部由嵌入式操作系统(如WinCE、Linux、VxWorks),由制造商自定义内核,本文采用的操作系统是由意法半导体公司提供的ST-Linux系统,开发平台也是由ST公司提供的集成达芬奇方案的arm开发板,本文根据实际要求自定义了一套基于DOM的XML文本,并利用C语言在ST-Linux环境下将其XML的内容解析,达到最后应用的目的,用此方式,当需要更改节目菜单甚至是整个机顶盒界面时,不再需要对程序代码有任何修改,只简单更改XML里面的内容信息即可,大大简化开发流程,缩短开发时间。

  3:基于DOM的XML解析器

  3.1 XML解析器

  XML的数据可以用SAX或者DOM来构建,所谓SAX,它是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不用建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。 而DOM即文档对象模型|文件物件模型,是将所有信息写成树状的结构以文档形式储存起来,它必须包含详细的信息,因为如此,DOM并不适合大规模高数据量的解析工作,只适用于小型的解析器,所以,这也成为了困扰DOM解析器的技术瓶颈,本文所解析的单页XML文档,定义所包含内容最多不能超过128项,也正是出于这种顾虑。其结构的树状结构

  如下所示:

  图1

  本文自定义的基于DOM的XML文档如下:

  图2

  3.2 XML解析函数

  3.2.1 axmlengine.h函数

  作为axmlengine.c函数的配置函数,axmlengine.h函数定义了所有axmlengine.c函数需要的结构体,如STGXOBJ_Rectangle_t,BtnInfo,VideoFrameInfo,VideoBtnInfo等,在axmlengine.h也定义了很多在axmlengine.c并未应用的结构体,如BckInfo,evt_param_t,GuiType_t结构体等,之所以这样做,是为了给后续开发留出接口,方便后续开发工作,在编写所有有关XML解析的程序时,都只用包含axmlengine.h即可,可简化编程工作量,结构体结构示例如下:(VideoFrameInfo结构体)

  typedef struct

  {

  char Type[NODE_VALUE_MAXLEN];

  BYTE TextSize[2];

  char PreXml[NODE_VALUE_MAXLEN];

  char CurrentXml[NODE_VALUE_MAXLEN];

  char NxtXml[NODE_VALUE_MAXLEN];

  char Cnumber;

  }VideoFrameInfo;

  3.2.2 VideoFrame 函数

  由于设定的显示页面一页最多显示16个菜单节目,为了解决多页节目菜单能按正确的顺序显示的问题,在xml文档中,每一页都加入了上一页及下一页信息,也就是xml文档中的pre_xml和nxt_xml,在成功解析的基础上,当机顶盒检测到红外遥控器发出按键值为“0x1A08”即遥控器向上按键时,主程序调用显示函数打开pre_xml中的文本,当遥控器发出按键值为“0x1A1B”即向下按键时,再调用显示函数打开nxt_xml中的文本,这样就完成了翻页操作。解析代码如下:

  src=strstr(src,"pre_xml=");

  src=strstr(src,"\"");

  end=strstr(src+1,"\"");

  strncpy(pVideoFrame->PreXml,src+1,end-src);

  *(pVideoFrame->PreXml+(end-src)-1)='\0';

  src=strstr(src,"nxt_xml=");

  src=strstr(src,"\"");

  end=strstr(src+1,"\"");

  strncpy(pVideoFrame->NxtXml,src+1,end-src);

  *(pVideoFrame->NxtXml+(end-src)-1)='\0';

  3.2.3 VideoButton函数

  在解决了翻页问题后,需要解决的问题就是当前页中的各个子元素包含的信息,在设计xml文档规范时,规定节目子元素包含的信息有流媒体名称StreamName,显示的位置pos,流媒体类型NetStreamType,流媒体网络地址href,音频ID,视频ID,当规定好文本后,按照格式规范,逐行解析出相关内容,最后放入数据库保持,供其他API函数调用其解析代码如下:(pos的解析代码)如下:

  //read sub_pos

  src=strstr(src,"pos=");

  if(src==NULL) return ST_NO_ERROR+1;

  src=strstr(src,"\"");

  if(src==NULL) return ST_NO_ERROR+1;

  //ascii to int

  pVideoButton->Rect.PositionX=atoi(src+1);

  src=strstr(src,",");

  pVideoButton->Rect.PositionY=atoi(src+1);

  src=strstr(src+1,",");

  pVideoButton->Rect.Width=atoi(src+1);

  src=strstr(src+1,",");

  pVideoButton->Rect.Height=atoi(src+1);

  3.2.4 GetVideoXmlInfo函数

  由于解析出来的数据都统一放入相应的结构体内,而在解析函数中为防止内存泄露,并未给结构体申明内存空间,所以在成功解析XML的基础上,为了能让IPTV机顶盒设计中存在的多种API函数调用解析数据,又设计了GetVideoXmlInfo函数,其作用就是读取外部XML文件,并统一分配内存空间和大小,在调用结束后,释放使用的内存,避免XML数据过大时,导致系统崩溃事件的发生,其部分代码如下:

  int file;

  char *buf,*tempbuf;

  int buflen=0,ret=0;

  int i=0,counter=0;

  file=open(src,O_RDWR);

  if (file<0)

  {

  printf("open file failed!,src=%s\n",src);

相关推荐
热门期刊
河南教育学院学报(哲学社会科学版)《河南教育学院学报(哲学社会科学版)》
《河南教育学院学报》杂志,双月刊,于1982年经国家新闻出版总署批准正式创刊,CN:41-1093/I,本刊在国内外有广泛的覆盖面,题材新颖,信息量大、时效性强的特点,其中主要栏...
教育评论《教育评论》
《教育评论》杂志,于1985年经国家新闻出版总署批准正式创刊,CN:35-1015/G4,本刊在国内外有广泛的覆盖面,题材新颖,信息量大、时效性强的特点,其中主要栏目有:教育改革...
复旦学报(自然科学版)《复旦学报(自然科学版)》
《复旦学报(自然科学版)》(双月刊)创刊于1955年,是由复旦大学主办的学术刊物。获奖情况:国家“双百”期刊;1999年获上海高校自然科学学报评比一等奖。;1999年获教育部...
电脑开发与应用《电脑开发与应用》
《电脑开发与应用》本刊集信息、知识、趣味、可读性于一体,以计算机实用技术见长,博采、精选国内外电脑研究、开发与应用的精华。具有军事、兵器控制色彩,军用计...
玻璃与搪瓷《玻璃与搪瓷》
《玻璃与搪瓷》(双月刊)1971年创刊,是工业技术性刊物。《玻璃与搪瓷》报道玻璃、搪瓷工业科研、生产、设计、开发等方面的新成果、新经验、介绍国外先进工艺与设备...
韩山师范学院学报《韩山师范学院学报》
《韩山师范学院学报》杂志,于1980年经国家新闻出版总署批准正式创刊,CN:44-1423/G4,本刊在国内外有广泛的覆盖面,题材新颖,信息量大、时效性强的特点,其中主要栏目有:文...
友情链接
中教杯 国家新闻出版总署 中国知网 万方数据 维普网 中国科学院 中国国家图书馆 央视英文版 中国留学网 中青网 中国国家人才网 中国经济网 中国日报网 中国新闻网 中国学术期刊网
关于我们
平台简介
诚聘英才
企业文化
竞争优势
版权信息
服务条款
客服承诺
常见问题
版权声明
合作加盟
期刊加盟
广告服务
联系我们
网站导航
期刊大全
论文下载
课题申报
学术会议
编辑QQ
编辑联络
2007-2023
中文学术期刊检索机构
bianjibu777@qq.com
联系我们

版权所有©2007- 2023 中国学术期刊网(qikanw.com) All Rights Reserved 京ICP备2021008252号
本站是学术论文网络平台,若期刊网有侵犯您的版权,请及时与期刊网客服取得联系,联系信箱: bianjibu777@qq.com    
中国学术期刊网