一种将IETP数据包转换为SCORM数据包的方法与流程

文档序号:17131176发布日期:2019-03-16 01:14阅读:407来源:国知局

本发明涉及一种将ietp数据包转换为scorm数据包的方法,属于交互式电子技术手册(ietm)和交互式培训系统(iets)的技术领域。



背景技术:

ietm标准主要有美国国防部ietm标准体系和欧洲s1000d国际规范。由于s1000d采用了数据模块(datamodule,dm)组织技术信息和采用公共源数据库(commonsourcedatabase,csdb)管理信息对象,以及为ietm的开发提供了一个开放系统描述方法,在构建集成信息环境方面具有明显的优势,因此,s1000d标准成为当前国际上主流的ietm标准。

scorm(sharablecontentobjectreferencemodel,可共享课程对象参照模型)是由美国国防部的高级分布式学习(adl)组织制定的,是目前使用范围最广、应用性最强的网络课程标准之一。它的出现使学习资源在不同的系统中重复使用和具有互操作性成为可能。一个符合scorm标准的课件,在任何符合scorm标准的交互式培训系统(iets)上都可以运行与共享。

ietp数据包是ietm中公共数据源(csdb)发布的一种形式,可以用于ietm阅读软件使用。scorm数据包可作为交互式培训系统课件。如果能够将ietp数据包直接转化为scorm数据包,实现在交互式培训系统直接使用,不需要人工参与,实现数据共享利用,则是用户希望达到的效果。

但存在问题是,ietp数据包和scorm数据包分别属于不同标准的数据包,目前在业界尚未发现能将ietp数据包自动转化为scorm数据的技术和方法。以往若需要将ietp数据包转化scorm数据包,采用的方法是:人工先对ietp数据包进行预处理,然后使用scorm数据包编辑软件进行人工编写。这种传统方法的缺点是无法实现两者之间的自动化转换,人工编写对人员水平有一定要求,且易发生人为错误。



技术实现要素:

本发明的目的就在于为了解决上述问题而提供一种将ietp数据包转换为scorm数据包的方法。

本发明通过以下技术方案来实现上述目的:

一种将ietp数据包转换为scorm数据包的方法,包括以下步骤:

步骤(1):清空scorm数据包目录下的临时目录及其子目录;

步骤(2):清空ietp数据包解压后所在目录及其子目录;

步骤(3):解压ietp数据包,如果解压后的文件仍然是压缩文件,继续解压,直到不存在压缩文件为止;

步骤(4):获取ietp数据包解压后的多个pm手册,并将pm手册存入list<publicationmodule>中;

步骤(5):对list<publicationmodule>中的pm手册进行遍历,获取当前的pm数据手册包;

步骤(6):解析pm数据手册包中的xml文件;

步骤(7):对pm数据手册进行打包,发布为scorm数据包。

进一步,所述步骤(6)包括以下具体步骤:

步骤(6.1):对pm数据手册包中的xml文件进行初始化,读取并解析pmxml文件;

步骤(6.2):解析出版物模块pm的标识类信息<pmaddress>和状态类信息<pmstatus>,并存入publicationmodule类型的变量currpm中;

步骤(6.3):对出版物模块pm的xml文件的<pm/content/pmentry>解析,如果<pmentry>的下一个子标签是<pmentry>,则重复解析出版物模块pm的<pm/content/pmentry>,直到<pmentry>的下一个子标签是<dmref>;获取dm目录结构信息,并存入链表list<dmcatalog>;将pm和dm关系存入pmanddm类型的变量pmdm中,将pmdm存入list<pmanddm>中。

更进一步,所述步骤(6.3)包括以下具体步骤:

步骤(6.3.1):对pm数据手册包中的xml文件中的路径/pm/content/pmentry进行遍历;

步骤(6.3.2):新建一个dm目录结构信息dmcatalog类型的变量dmcatalog,根据currpm中的信息,对dmcatalog进行设值,将dmcatalog存入链表list<dmcatalog>中;

步骤(6.3.3):解析<pm/content/pmentry>元素标签,新建一个dm目录结构信息dmcatalog类型的变量subdmcatalog,根据步骤步骤(6.3.2)中变量dmcatalog的值,设置subdmcatalog的值,将subdmcatalog存入链表list<dmcatalog>中,根据<pmentry>的第一个子标签<pmentrytitle>的值,设置subdmcatalog的值;

步骤(6.3.4):如果<pm/content/pmentry>的下一个子标签是<pmentry>,则执行步骤(6.3.3),如果<pm/content/pmentry>的下一个子标签是<dmref>,则执行步骤(6.3.5);

步骤(6.3.5):解析<dmref>元素标签,新建一个dm目录结构信息dmcatalog类型的变量subsubdmcatalog,根据步骤(6.3.3)中的变量subdmcatalog,设置subsubdmcatalog的值,将subsubdmcatalog存入list<dmcatalog>中;

步骤(6.3.6):解析<dmref>元素的第一个子标签<dmrefident>及其子标签,获取dmc的值,设置subsubdmcatalog的dmc值;新建一个pmanddm类型的变量pmdm,用于表示pm和dm关系,将该变量存于list<pmanddm>中;

步骤(6.3.7):获取<dmref>元素的第一个子标签<dmrefaddressitems>的子标签<dmtitle>的子标签<techname>和子标签<infoname>的值,并赋给subsubdmcatalog。

进一步,所述步骤(7)包括以下具体步骤:

步骤(7.1):拷贝imsmanifest.xml模板文件到指定scorm数据包的相应目录;

步骤(7.2):将其它的模板文件拷贝到scorm数据包的相应目录;

步骤(7.3):设置imsmanifest.xml文件中的课件基本信息,包括但不限于scorm数据包课件名称,即设置organizations的属性default和identifier;

步骤(7.4):遍历list<dmcatalog>,判断该节点是否为根节点,如果是根节点,则执行步骤(7.5),如果不是根节点,则执行步骤(7.6);

步骤(7.5):给organizations节点添加子节点organization;

步骤(7.6):根据父节点查找相对应的organization,并添加item节点;

步骤(7.7):为新添加的节点organization或item添加子节点title;

步骤(7.8):写学习资源文件,遍历list<pmanddm>,将pm数据包下的dmc*.xml文件和相应的学习物理资源文件拷贝到scorm数据包的对应目录中,并将相关的学习资源信息添加到imsmanifest.xml文件中的<resources>节点及其子节点中。

本发明的有益效果在于:

本发明通过使用开源框架vtd-xml解析多个xml文件,这是一种非提取式解析xml的方法,较好的解决了dom占用内存过大的缺点,并且还提供了快速的解析与遍历、对xpath的支持和增量更新等,通过本发明能够将符合s1000d标准的ietp数据包转换为完整的scorm数据包,以便在交互式培训系统(iets)中直接使用,且为高效、准确的自动转换,不需要人工参与即可实现数据共享利用,应用非常方便。

具体实施方式

下面结合实施例对本发明作进一步说明:

实施例:

通过以下步骤将ietp数据包转换为scorm数据包:

步骤(1):清空scorm数据包目录下的临时目录及其子目录;

步骤(2):清空ietp数据包解压后所在目录及其子目录;

步骤(3):解压ietp数据包,如果解压后的文件仍然是压缩文件,继续解压,直到不存在压缩文件为止;

步骤(4):获取ietp数据包解压后的多个pm手册,并将pm手册存入list<publicationmodule>中;

步骤(5):对list<publicationmodule>中的pm手册进行遍历,获取当前的pm数据手册包;

步骤(6):解析pm数据手册包中的xml文件,具体步骤如下:

步骤(6.1):对pm数据手册包中的xml文件进行初始化,读取并解析pmxml文件;

步骤(6.2):解析出版物模块pm的标识类信息<pmaddress>和状态类信息<pmstatus>,并存入publicationmodule类型的变量currpm中;

步骤(6.3):对出版物模块pm的xml文件的<pm/content/pmentry>解析,如果<pmentry>的下一个子标签是<pmentry>,则重复解析出版物模块pm的<pm/content/pmentry>,直到<pmentry>的下一个子标签是<dmref>;获取dm目录结构信息,并存入链表list<dmcatalog>;将pm和dm关系存入pmanddm类型的变量pmdm中,将pmdm存入list<pmanddm>中;本步骤的具体步骤如下:

步骤(6.3.1):对pm数据手册包中的xml文件中的路径/pm/content/pmentry进行遍历;

步骤(6.3.2):新建一个dm目录结构信息dmcatalog类型的变量dmcatalog,根据currpm中的信息,对dmcatalog进行设值,将dmcatalog存入链表list<dmcatalog>中;

步骤(6.3.3):解析<pm/content/pmentry>元素标签,新建一个dm目录结构信息dmcatalog类型的变量subdmcatalog,根据步骤步骤(6.3.2)中变量dmcatalog的值,设置subdmcatalog的值,将subdmcatalog存入链表list<dmcatalog>中,根据<pmentry>的第一个子标签<pmentrytitle>的值,设置subdmcatalog的值;

步骤(6.3.4):如果<pm/content/pmentry>的下一个子标签是<pmentry>,则执行步骤(6.3.3),如果<pm/content/pmentry>的下一个子标签是<dmref>,则执行步骤(6.3.5);

步骤(6.3.5):解析<dmref>元素标签,新建一个dm目录结构信息dmcatalog类型的变量subsubdmcatalog,根据步骤(6.3.3)中的变量subdmcatalog,设置subsubdmcatalog的值,将subsubdmcatalog存入list<dmcatalog>中;

步骤(6.3.6):解析<dmref>元素的第一个子标签<dmrefident>及其子标签,获取dmc的值,设置subsubdmcatalog的dmc值;新建一个pmanddm类型的变量pmdm,用于表示pm和dm关系,将该变量存于list<pmanddm>中;

步骤(6.3.7):获取<dmref>元素的第一个子标签<dmrefaddressitems>的子标签<dmtitle>的子标签<techname>和子标签<infoname>的值,并赋给subsubdmcatalog;

步骤(7):对pm数据手册进行打包,发布为scorm数据包;本步骤具体步骤如下:

步骤(7.1):拷贝imsmanifest.xml模板文件到指定scorm数据包的相应目录;

步骤(7.2):将其它的模板文件拷贝到scorm数据包的相应目录;

步骤(7.3):设置imsmanifest.xml文件中的课件基本信息,包括但不限于scorm数据包课件名称,即设置organizations的属性default和identifier;

步骤(7.4):遍历list<dmcatalog>,判断该节点是否为根节点,如果是根节点,则执行步骤(7.5),如果不是根节点,则执行步骤(7.6);

步骤(7.5):给organizations节点添加子节点organization;

步骤(7.6):根据父节点查找相对应的organization,并添加item节点;

步骤(7.7):为新添加的节点organization或item添加子节点title;

步骤(7.8):写学习资源文件,遍历list<pmanddm>,将pm数据包下的dmc*.xml文件和相应的学习物理资源文件拷贝到scorm数据包的对应目录中,并将相关的学习资源信息添加到imsmanifest.xml文件中的<resources>节点及其子节点中。

上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1