CN104158692B - 基于xml实现家庭网关数据配置管理的方法 - Google Patents
基于xml实现家庭网关数据配置管理的方法 Download PDFInfo
- Publication number
- CN104158692B CN104158692B CN201410422845.XA CN201410422845A CN104158692B CN 104158692 B CN104158692 B CN 104158692B CN 201410422845 A CN201410422845 A CN 201410422845A CN 104158692 B CN104158692 B CN 104158692B
- Authority
- CN
- China
- Prior art keywords
- node
- parameter
- xml
- configuration
- configuration file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于XML实现家庭网关数据配置管理的方法,包括以下步骤:在内存中分别定义TR_object和TR_param两个数据结构;加载并遍历家庭网关的XML配置文件,将其中的对象和参数以及各自的属性信息配置到内存中的TR_object、TR_param数据结构中,构造出内存节点参数树;将内存节点参数树中的配置数据写回家庭网关的FLASH中,并保存形成新XML配置文件;家庭网关重启后重新读取FLASH中的新XML配置文件,进行配置管理。本发明利用XML规则设计一种用于统一存储家庭网关数据的XML文件,并在参数信息变化时即时将配置信息保存到FLASH中,简化配置数据加载流程,提高配置数据读写效率,降低程序内存占有率。
Description
技术领域
本发明涉及家庭网关,具体涉及基于XML实现家庭网关数据配置管理的方法。
背景技术
家庭网关是一个在家庭内的网络化信息设备与智能宽带接入网之间的智能化网关。它的主要作用是:(1)作为所有外部接入网连接到家庭内部,同时将家庭内部网络连接到外部的一种物理接口;(2)使住宅用户可以获得各种家庭服务(包括现有的服务和未来可能出现的服务)的平台。
随着网络技术的发展和普及,家庭网关已经开始大规模地进入到普通家庭,在未来几年,它将替代目前大部分家庭正在使用的Modem和路由器,成为主流的家庭网络接入设备。
家庭网关的上行方式主要支持:ADSL上行、LAN上行和PON上行,业务数据主要包括:Internet、VoIP、IPTV等。目前,家庭网关普遍遵循宽带论坛发布的TR069规范中对数据模型的定义要求,该数据模型具有良好的可管理性,能够灵活适应各种上行方式,为用户提供多种业务能力,因此,有利于网络服务商进行统一的部署和管理。家庭网关的可管理性需求,决定了家庭网关必须具有一套基于TR069数据模型进行业务配置管理的功能,其中包括了数据定义、数据描述、数据存储、数据读写等功能。
如今,家庭网关配置管理的实现方式因生产厂家的不同而不同,主要采用的是嵌入式数据库管理,为不同的业务数据模型创建的不同配置文件存储在数据库上。这种方式存在的主要问题是:家庭网关的配置数据加载流程复杂,配置数据读写访问效率低下,内存占用率高。
有鉴于此,急需对现有家庭网关配置管理的实现方式进行优化设计,以简化家庭网关的配置数据加载流程,提高配置数据读写的效率。
发明内容
本发明所要解决的技术问题是解决家庭网关的配置数据加载流程复杂,配置数据读写访问效率低下,内存占用率高的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种基于XML实现家庭网关数据配置管理的方法,包括以下步骤:
步骤100、在内存中分别定义TR_object和TR_param两个数据结构;
步骤200、加载并遍历家庭网关的XML配置文件,将其中的对象和参数以及各自的属性信息配置到内存中的TR_object、TR_param数据结构中,构造出内存节点参数树;
步骤300、将内存节点参数树中的配置数据写回家庭网关的FLASH中,并保存形成新XML配置文件;
步骤400、家庭网关重启后重新读取FLASH中的新XML配置文件,进行配置管理。
在上述方法中,所述TR_object数据结构包括:
指针字段TR_param*param,用于保存对象节点的第一个参数节点的地址,若对象节点下无参数节点,则param值为NULL;
指针字段TR_object*parent,用于保存对象节点的父节点,若对象节点为树根节点,则parent值为NULL;
指针字段TR_object*next,用于保存对象节点的右兄弟节点,若对象节点无右兄弟节点,则next值为NULL;
指针字段TR_object*next_layer,用于保存对象节点的第一个左子树节点,若对象节点下无子树节点,则next_layer值为NULL;
所述TR_param数据结构包括:
指针字段TR_param*next,用于保存参数节点的下一个兄弟参数节点,若无下一个兄弟参数节点,则next值为NULL;
指针字段TR_object*parent,用于保存参数节点的父节点。
在上述方法中,在构建内存节点参数树过程中,参数配置节点在树中均被定义为叶子节点,参数配置节点的父节点必须是对象节点,对象节点和对象节点之间、同一对象节点下的参数节点之间以及对象节点和对象节点下的参数节点之间均采用链表的方式关联。
在上述方法中,步骤200具体包括以下步骤:
步骤201、获取默认XML配置文件路径,获取XML配置文件的默认完整性保护读写标志;
步骤202、根据完整性保护读写标志是否为0判断当前XML配置文件的完整性,如果完整性保护读写标志不为0,则当前XML配置文件不完整,转步骤204;否则执行步骤203;
步骤203、加载当前XML配置文件并生成节点结构树,如果生成节点结构树失败,则转步骤204;否则转步骤205;
步骤204、按照预定义的XML备份加载规则获取当前XML配置文件的冗余备份XML配置文件,若获取备份XML配置文件成功,则将备份XML配置文件设置为当前XML配置文件,转步骤203;否则转步骤212;
步骤205、利用节点结构树构造内存节点参数树,如果构造成功,则转步骤206;否则转步骤212;
步骤206、直接判断是否存在参数修改记录日志文件,若存在则转步骤207;否则转步骤208;
步骤207、读取参数修改记录日志文件,并更新配置数据至内存节点参数树中;
步骤208、同步设备出厂定制配置信息,更新数据到内存节点参数树中;
步骤209、初始化对象节点路径;
步骤210、初始化参数配置节点路径和参数值并进行关联;
步骤211、保存当前内存节点参数树配置数据;
步骤212,退出。
在上述方法中,家庭网关的ROM存储区存有一份能保证家庭网关设备数据成功构造的只读XML配置文件。
在上述方法中,步骤300具体包括以下步骤:
步骤301、申请开辟预算大小的内存缓冲区,并用一个指针char*buf指向缓冲区起始地址,如果申请成功,则转步骤302;否则转步骤322;
步骤302、获取配置内存节点参数树的根节点,将TR_object*parent指针指向根节点,若获取配置内存节点参数树根节点失败,则转步骤322;否则执行步骤303;
步骤303、获取当前TR_object*parent指针指向对象的配置数据,且将所述配置数据转换为XML配置文件对象格式字符流,并输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时该指针buf向后偏移临时缓冲区字符流的长度;
步骤304、判断当前TR_object*parent类型指针指向的对象节点是否存在参数子节点,如果存在,则转步骤305;否则转步骤309;
步骤305、将TR_param*param指针指向当前TR_object*parent指针指向对象的第一个左叶子参数节点;
步骤306、获取TR_param*param指针指向的参数节点的配置数据,且将所述参数节点的配置数据转换为XML配置文件参数格式字符流,并输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移该临时缓冲区字符流的长度;
步骤307、判断TR_param*param指针指向的参数节点是否存在下一个兄弟参数节点,如果存在,则转步骤308;否则转步骤309;
步骤308、将TR_param*next指针指向其当前指向的参数节点的下一个兄弟参数节点,然后转步骤306;
步骤309、判断TR_object*parent指针指向的对象节点是否存在子树节点,如果存在,则转步骤310;否则转步骤311;
步骤310,将TR_object*next_layer指针指向TR_object*parent当前指向的对象节点的第一个左子树节点,然后转步骤303;
步骤311,按照XML语法要求添加对象节点结束符号到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移该临时缓冲区字符流的长度;
步骤312,将TR_object*parent指针指向其当前指向的对象节点的父节点;
步骤313、判断TR_object*parent指针指向的对象节点是否为内存节点参数树根节点,如果是内存节点参数树根节点,则转步骤316;否则转步骤314;
步骤314、判断TR_object*parent指针指向的对象节点是否存在右兄弟节点,如果存在,则转步骤315;否则转步骤311;
步骤315、将TR_object*next指针指向其当前指向的对象节点的第一个右兄弟节点,然后转步骤303;
步骤316、设置XML读写标志为写状态,并判断是否成功设置为写状态,如果不成功,则转步骤321;否则转步骤317;
步骤317、以写入模式打开默认XML配置文件,并判断是否成功打开,如果打开失败,则转步骤321;否则转步骤318;
步骤318、将缓冲区字符流写入XML配置文件,并判断是否成功写入,如果写入不成功,则转步骤320;否则转步骤319;
步骤319,设置XML配置文件读写标志为写状态;
步骤320,关闭XML配置文件;
步骤321,释放缓冲区;
步骤322,退出。
在上述方法中,步骤400具体包括以下步骤:
步骤401、家庭网关重启后,通过参数节点搜索接口判断当前参数读写配置节点的全路径是否存在于内存节点参数树中,若存在则转步骤404;否则转步骤402;
步骤402、设置错误码,同时返回NULL;
步骤403、结束读写操作;
步骤404、判断当前需要进行的操作类型是否为读操作,如果是读操作,则转步骤405;否则是写操作转步骤408;
步骤405、调用通用读配置接口读取配置数据;
步骤406、返回获取得到的配置数据;
步骤407、结束读操作;
步骤408、调用通用写配置接口设置配置数据;
步骤409、调用通用设置接口;
步骤410、判断当前设置的参数是否已经存在于参数修改记录链表中,若存在则转步骤413;否则转步骤411;
步骤411、在参数修改记录链表中分配当前参数设置节点空间;
步骤412、将需要设置的参数值写入参数修改记录链表;
步骤413、将参数修改记录链表数据写入参数设置记录文件;
步骤414、结束写操作。
本发明基于XML语法规则设计保存家庭网关配置数据的数据结构,将家庭网关配置数据的XML配置文件解析并存入上述数据结构内完成内存节点参数树的构造,利用内存中的数据构造出新XML配置文件并写入家庭网关的FLASH,利用Linux IPC接口完成配置数据进程间的通信,实现家庭网关业务数据的配置管理功能,做到了在参数信息变化时可以即时将配置信息保存到FLASH中,简化配置数据加载流程,提高配置数据读写效率,降低程序内存占有率。
附图说明
图1是本发明基于XML实现家庭网关数据配置管理的方法流程图;
图2是本发明中配置数据XML存储文件格式定义示意图;
图3是本发明中内存节点参数树模型及数据结构定义示意图;
图4是本发明中构造配置数据内存节点参数树的流程图;
图5是本发明中内存配置数据写XML文件的流程图;
图6是本发明中配置数据读写操作的流程图。
具体实施方式
下面结合说明书附图对本发明做出详细的说明。
如图1所示,本发明提供的基于XML实现家庭网关数据配置管理的方法(遵循TR069规范定义家庭网关配置数据文件的数据结构),具体包括以下步骤:
步骤100、在内存中分别定义TR_object和TR_param两个数据结构用于描述XML配置文件中的对象obj及其属性信息以及参数param及其属性信息,用于构造内存节点参数树。
如图2、图3所示,在内存节点参数树中,对象称为对象节点,其属性包括:name(对象名称)、rw(对象类型)以及key(对象下所带参数节点是否存在关键参数)和pnoe(动态对象实例个数记录参数节点相对路径);参数称为参数节点,其属性包括:name(参数名称)、rw(参数读写属性)、type(参数值存储类型)、noti_rw(该参数noti属性是否可被修改)、value(参数值)、key(参数等级)、dev_func(参数原子操作函数在函数库中索引名称)、sig_noti(参数在数据共享管理中所属的业务类型)、noti(参数值发生改变时候是否主动上报ITMS平台)、flash_rw(参数值发生改变时候是否需要写FLASH操作)、accesslist(外部应用程序是否可以读取该参数的值)。
在TR_object数据结构设计中,设计指针字段TR_param*param用于保存对象节点的第一个参数节点的地址,若对象节点下无参数节点,则param值NULL;设计指针字段TR_object*parent用于保存对象节点的父节点,若对象节点为树根节点,则parent值为NULL;设计指针字段TR_object*next用于保存对象节点的右兄弟节点,若对象节点无右兄弟节点,则next值为NULL;设计指针字段TR_object*next_layer用于保存对象节点的第一个左子树根节点,若对象节点下无子树节点,则next_layer值为NULL。
在TR_param数据结构设计中,设计指针字段TR_param*next用于保存参数节点的下一个兄弟参数节点,若无下一个兄弟参数节点,则next值为NULL;设计指针字段TR_object*parent用于保存参数节点的父节点。
参数节点在内存节点参数树中均被定义为叶子节点,参数节点的父节点必须是对象节点,按照数据结构定义,在构造内存数据结构树的设计中,两种数据结构中均包含另一种数据结构字段,对象节点和对象节点之间、同一对象节点下的参数节点之间以及对象节点和对象节点下的参数节点之间均采用链表的方式关联,从而形成多层次多叉树,通过根节点即可访问整棵树。
步骤200、将保存在家庭网关FLASH的XML配置文件中的家庭网关配置数据解析出来,遍历解析后的XML配置文件,将其中的对象和参数以及各自的属性信息配置到内存中的TR_object、TR_param数据结构中,构造出内存节点参数树。如图4所示,具体包括以下步骤:
步骤201、获取默认XML配置文件路径,获取XML配置文件默认的完整性保护读写标志。
步骤202、根据完整性保护读写标志是否为0判断当前XML配置文件的完整性,如果完整性保护读写标志不为0,则当前XML配置文件不完整,转步骤204;否则执行步骤203。
步骤203、加载当前XML配置文件并生成节点(node)结构树,如果生成node结构树失败,则转步骤204;否则转步骤205。
步骤204、按照预定义的XML备份加载规则获取当前XML配置文件的冗余备份XML配置文件,若获取备份XML配置文件成功,则将备份XML配置文件设置为当前XML配置文件,转步骤203;否则转步骤212。
步骤205、利用node结构树构造内存节点参数树,如果构造成功,则转步骤206;否则转步骤212。
步骤206、判断是否存在参数修改记录日志文件,若存在则转步骤207;否则转步骤208。
步骤207、读取参数修改记录日志文件,并更新配置数据至内存节点参数树中。
步骤208、同步设备出厂定制配置信息,更新数据到内存节点参数树中。
步骤209、初始化对象节点路径信息(全局变量objpath),用于高效检索对象的节点路径信息。
步骤210、初始化参数配置节点路径和参数值等信息(xml_peer全局变量)并进行关联。
步骤211、保存当前内存节点参数树配置数据。
步骤212、退出配置加载程序。
上述流程中,程序启动时首先获取默认XML配置文件路径及默认XML配置文件完整性保护读写标志,然后根据默认XML配置文件完整性保护读写标志以及加载默认XML配置文件是否成功决定是否进入步骤204。步骤204中,采用冗余备份方式设计备份XML配置文件路径,且设计不同的备份读取规则以保护和检验XML配置文件的完整性和可用性。通过迭代获取XML备份文件进行尝试性读取,若某一备份读取成功,则程序正常启动。在家庭网关的ROM存储区有一份能保证家庭网关设备数据成功构造的只读XML配置文件,确保了家庭网关在FLASH的ROM存储区不损坏情况下,能正常初始化XML配置文件。
步骤300、将内存节点参数树中的配置数据写回家庭网关中的FLASH,并保存形成新XML配置文件,如图5所示,具体步骤如下:
步骤301、调用系统方法申请开辟预算大小的内存缓冲区,并用一个指针char*buf指向缓冲区起始地址,如果申请成功,则转步骤302;否则转步骤322。
步骤302、获取配置内存节点参数树根节点,将TR_object*parent指针指向根节点,若获取配置内存节点参数树根节点失败,则转步骤322;否则执行步骤303。
步骤303、获取当前TR_object*parent指针指向对象的配置数据,且将该指针指向对象的配置数据按照特定算法转换为XML配置文件对象格式字符流输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移临时缓冲区该字符流的长度。
步骤304、判断当前TR_object*parent指针指向对象的节点是否存在参数子节点,如果存在,则转步骤305;否则转步骤309。
步骤305、将TR_param*param指针指向当前TR_object*parent指针指向对象的第一个左叶子参数节点。
步骤306、获取当前TR_param*param指针指向参数节点的配置数据,且将TR_param*param指针指向的参数节点配置数据按照特定算法转换为XML配置文件参数格式字符流输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移临时缓冲区该字符流的长度。
步骤307、判断TR_param*param指针指向的参数节点是否存在下一个兄弟参数节点,如果存在,则转步骤308;否则转步骤309。
步骤308、将TR_param*next指针指向当前TR_param*param指针指向的参数节点的下一个兄弟参数节点,然后转步骤306。
步骤309、判断TR_object*parent指针指向的对象节点是否存在子树节点,如果存在,则转步骤310;否则转步骤311。
步骤310、将TR_object*next_laye指针指向当前指向的对象节点的第一个左子树节点,然后转步骤303。
步骤311、按照XML语法要求添加对象节点结束符号到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移临时缓冲区该字符流的长度。
步骤312、将TR_object*parent指针指向其当前指向的对象节点的父节点。
步骤313、判断TR_object*parent指针指向的对象节点是否为内存节点参数树根节点,如果是内存节点参数树根节点,则转步骤316;否则转步骤314。
步骤314、判断TR_object*parent指针指向的对象节点是否存在右兄弟节点,如果存在,则转步骤315;否则转步骤311。
步骤315、将TR_object*next指针指向当前TR_object*parent指针指向的对象节点的第一个右兄弟节点,然后转步骤303。
步骤316、设置XML读写标志为写状态,即设置为1,并判断是否成功设置为写状态,如果不成功,则转步骤321;否则转步骤317。
步骤317、以写入模式打开默认XML配置文件,并判断是否成功打开,如果打开失败,则转步骤321;否则转步骤318。
步骤318、将缓冲区字符流写入XML配置文件,并判断是否成功写入,如果写入不成功,则转步骤320;否则转步骤319。
步骤319、设置XML配置文件读写标志为读状态,即设置为0。
步骤320、关闭XML配置文件。
步骤321、释放缓冲区。
步骤322、退出写XML配置文件程序。
步骤400、家庭网关重启后重新读取FLASH中的新XML配置文件,进行配置管理,如图6所示,具体包括以下步骤:
步骤401、内存中收到外部发送的配置管理命令并且解析检查后,调用参数节点搜索接口判断当前参数读写配置节点的全路径是否存在于内存节点参数树中,若存在则转步骤404;否则转步骤402。
步骤402、设置错误码,同时返回NULL。
步骤403、退出配置读写程序,结束读写操作。
步骤404、判断当前需要进行的操作类型是否为读操作,如果是读操作,则转步骤405;否则是写操作转步骤408。
步骤405、调用通用读配置接口dev_func读取配置数据。
步骤406、返回获取得到的配置数据。
步骤407、退出读参数程序,结束读操作。
步骤408、调用通用写配置接口dev_func设置配置数据。
步骤409、调用通用设置接口。
步骤410、判断当前设置的配置参数是否已经存在于参数修改记录链表中,若存在则转步骤413;否则转步骤411。
步骤411、在参数修改记录链表中分配当前参数设置节点空间。
步骤412、将需要设置的参数值写入参数修改记录链表。
步骤413、将参数修改记录链表数据写入参数设置记录文件。
步骤414、退出写参数程序,结束写操作。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (6)
1.基于XML实现家庭网关数据配置管理的方法,其特征在于,包括以下步骤:
步骤100、在内存中分别定义用于描述XML配置文件中的对象及其属性信息的TR_object和用于描述XML配置文件中的参数及其属性信息的TR_param两个数据结构;
步骤200、加载并遍历家庭网关的XML配置文件,将其中的对象和参数以及各自的属性信息配置到内存中的TR_object、TR_param数据结构中,构造出内存节点参数树;
步骤300、将内存节点参数树中的配置数据写回家庭网关的FLASH中,并保存形成新XML配置文件;
步骤400、家庭网关重启后重新读取FLASH中的新XML配置文件,进行配置管理;
其中,步骤400具体包括以下步骤:
步骤401、收到外部发送的配置管理命令并且解析检查后,调用参数节点搜索接口判断当前参数读写配置节点的全路径是否存在于内存节点参数树中,若存在则转步骤404;否则转步骤402;
步骤402、设置错误码,同时返回NULL;
步骤403、结束读写操作;
步骤404、判断当前需要进行的操作类型是否为读操作,如果是读操作,则转步骤405;否则是写操作转步骤408;
步骤405、调用通用读配置接口读取配置数据;
步骤406、返回获取得到的配置数据;
步骤407、结束读操作;
步骤408、调用通用写配置接口设置配置数据;
步骤409、调用通用设置接口;
步骤410、判断当前设置的参数是否已经存在于参数修改记录链表中,若存在则转步骤413;否则转步骤411;
步骤411、在参数修改记录链表中分配当前参数设置节点空间;
步骤412、将需要设置的参数值写入参数修改记录链表;
步骤413、将参数修改记录链表数据写入参数设置记录文件;
步骤414、结束写操作。
2.如权利要求1所述的方法,其特征在于,所述TR_object数据结构包括:
指针字段TR_param*param,用于保存对象节点的第一个参数节点的地址,若对象节点下无参数节点,则param值为NULL;
指针字段TR_object*parent,用于保存对象节点的父节点,若对象节点为树根节点,则parent值为NULL;
指针字段TR_object*next,用于保存对象节点的右兄弟节点,若对象节点无右兄弟节点,则next值为NULL;
指针字段TR_object*next_layer,用于保存对象节点的第一个左子树节点,若对象节点下无子树节点,则next_layer值为NULL;
所述TR_param数据结构包括:
指针字段TR_param*next,用于保存参数节点的下一个兄弟参数节点,若无下一个兄弟参数节点,则next值为NULL;
指针字段TR_object*parent,用于保存参数节点的父节点。
3.如权利要求1所述的方法,其特征在于,在构建内存节点参数树过程中,参数配置节点在树中均被定义为叶子节点,参数配置节点的父节点必须是对象节点,对象节点和对象节点之间、同一对象节点下的参数节点之间以及对象节点和对象节点下的参数节点之间均采用链表的方式关联。
4.如权利要求1所述的方法,其特征在于,步骤200具体包括以下步骤:
步骤201、获取默认XML配置文件路径,获取XML配置文件的默认完整性保护读写标志;
步骤202、根据完整性保护读写标志是否为0判断当前XML配置文件的完整性,如果完整性保护读写标志不为0,则当前XML配置文件不完整,转步骤204;否则执行步骤203;
步骤203、加载当前XML配置文件并生成节点结构树,如果生成节点结构树失败,则转步骤204;否则转步骤205;
步骤204、按照预定义的XML备份加载规则获取当前XML配置文件的冗余备份XML配置文件,若获取备份XML配置文件成功,则将备份XML配置文件设置为当前XML配置文件,转步骤203;否则转步骤212;
步骤205、利用节点结构树构造内存节点参数树,如果构造成功,则转步骤206;否则转步骤212;
步骤206、直接判断是否存在参数修改记录日志文件,若存在则转步骤207;否则转步骤208;
步骤207、读取参数修改记录日志文件,并更新配置数据至内存节点参数树中;
步骤208、同步设备出厂定制配置信息,更新数据到内存节点参数树中;
步骤209、初始化对象节点路径;
步骤210、初始化参数配置节点路径和参数值并进行关联;
步骤211、保存当前内存节点参数树配置数据;
步骤212,退出。
5.如权利要求4所述的方法,其特征在于,家庭网关的ROM存储区存有一份能保证家庭网关设备数据成功构造的只读XML配置文件。
6.如权利要求2所述的方法,其特征在于,步骤300具体包括以下步骤:
步骤301、申请开辟预算大小的内存缓冲区,并用一个指针char*buf指向缓冲区起始地址,如果申请成功,则转步骤302;否则转步骤322;
步骤302、获取配置内存节点参数树的根节点,将TR_object*parent指针指向根节点,若获取配置内存节点参数树根节点失败,则转步骤322;否则执行步骤303;
步骤303、获取当前TR_object*parent指针指向对象的配置数据,且将所述配置数据转换为XML配置文件对象格式字符流,并输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时该指针buf向后偏移临时缓冲区字符流的长度;
步骤304、判断当前TR_object*parent类型指针指向的对象节点是否存在参数子节点,如果存在,则转步骤305;否则转步骤309;
步骤305、将TR_param*param指针指向当前TR_object*parent指针指向对象的第一个左叶子参数节点;
步骤306、获取TR_param*param指针指向的参数节点的配置数据,且将所述参数节点的配置数据转换为XML配置文件参数格式字符流,并输出到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移该临时缓冲区字符流的长度;
步骤307、判断TR_param*param指针指向的参数节点是否存在下一个兄弟参数节点,如果存在,则转步骤308;否则转步骤309;
步骤308、将TR_param*next指针指向其当前指向的参数节点的下一个兄弟参数节点,然后转步骤306;
步骤309、判断TR_object*parent指针指向的对象节点是否存在子树节点,如果存在,则转步骤310;否则转步骤311;
步骤310,将TR_object*next_layer指针指向TR_object*parent当前指向的对象节点的第一个左子树节点,然后转步骤303;
步骤311,按照XML语法要求添加对象节点结束符号到临时缓冲区,将临时缓冲区字符流复制到指针buf指向的缓冲区,同时指针buf向后偏移该临时缓冲区字符流的长度;
步骤312,将TR_object*parent指针指向其当前指向的对象节点的父节点;
步骤313、判断TR_object*parent指针指向的对象节点是否为内存节点参数树根节点,如果是内存节点参数树根节点,则转步骤316;否则转步骤314;
步骤314、判断TR_object*parent指针指向的对象节点是否存在右兄弟节点,如果存在,则转步骤315;否则转步骤311;
步骤315、将TR_object*next指针指向其当前指向的对象节点的第一个右兄弟节点,然后转步骤303;
步骤316、设置XML读写标志为写状态,并判断是否成功设置为写状态,如果不成功,则转步骤321;否则转步骤317;
步骤317、以写入模式打开默认XML配置文件,并判断是否成功打开,如果打开失败,则转步骤321;否则转步骤318;
步骤318、将缓冲区字符流写入XML配置文件,并判断是否成功写入,如果写入不成功,则转步骤320;否则转步骤319;
步骤319,设置XML配置文件读写标志为写状态;
步骤320,关闭XML配置文件;
步骤321,释放缓冲区;
步骤322,退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422845.XA CN104158692B (zh) | 2014-08-25 | 2014-08-25 | 基于xml实现家庭网关数据配置管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422845.XA CN104158692B (zh) | 2014-08-25 | 2014-08-25 | 基于xml实现家庭网关数据配置管理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104158692A CN104158692A (zh) | 2014-11-19 |
CN104158692B true CN104158692B (zh) | 2018-04-17 |
Family
ID=51884103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410422845.XA Active CN104158692B (zh) | 2014-08-25 | 2014-08-25 | 基于xml实现家庭网关数据配置管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104158692B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547749B (zh) * | 2015-09-16 | 2021-02-12 | 北京国双科技有限公司 | 网页数据采集的方法和装置 |
CN105407138B (zh) * | 2015-10-23 | 2019-07-05 | 上海斐讯数据通信技术有限公司 | 配置文件加载方法及装置、通信设备 |
CN105824944B (zh) * | 2016-03-21 | 2019-10-22 | 上海斐讯数据通信技术有限公司 | 一种基于脚本语言的xml配置数据维护方法及系统 |
CN106059785A (zh) * | 2016-05-04 | 2016-10-26 | 上海斐讯数据通信技术有限公司 | 一种配置无线设备方法及无线设备 |
CN106130799B (zh) * | 2016-08-29 | 2019-05-28 | 烽火通信科技股份有限公司 | 具有多运营商切换功能的家庭网关设备及其切换方法 |
CN106682105B (zh) * | 2016-12-05 | 2021-09-03 | 京信网络系统股份有限公司 | Tr参数与结构体参数的转换、acs与cpe的通信方法和系统 |
CN106919424A (zh) * | 2017-02-27 | 2017-07-04 | 烽火通信科技股份有限公司 | 一种pon网络的onu中配置文件管理系统及管理方法 |
CN107301207B (zh) * | 2017-06-02 | 2020-04-17 | 北京天融信网络安全技术有限公司 | 一种解析xml的方法及装置 |
CN108153521A (zh) * | 2017-12-13 | 2018-06-12 | 深圳市泛海三江科技发展有限公司 | 一种xml配置文件的管理方法及其系统 |
CN108984622B (zh) * | 2018-06-14 | 2020-06-16 | 烽火通信科技股份有限公司 | 家庭网关快速访问配置数据的存储访问方法及系统 |
CN109067546B (zh) * | 2018-09-19 | 2019-06-21 | 杭州数梦工场科技有限公司 | 一种管理安全证书的方法、装置、设备及计算机存储介质 |
CN109634682B (zh) * | 2018-11-29 | 2022-02-15 | 恒生电子股份有限公司 | 应用程序的配置文件更新方法及装置 |
CN109669606B (zh) * | 2018-12-19 | 2021-08-31 | 西门子传感器与通讯有限公司 | 设备参数配置方法及其系统、计算机可读存储介质 |
CN109769156B (zh) * | 2019-03-28 | 2022-04-12 | 瑞斯康达科技发展股份有限公司 | 一种gpon业务模型的可视化实现方法及装置 |
CN110351132B (zh) * | 2019-06-28 | 2022-04-12 | 烽火通信科技股份有限公司 | 一种家庭网关配置恢复方法及系统 |
CN110704394B (zh) * | 2019-09-03 | 2023-06-30 | 苏宁云计算有限公司 | 报表配置修改方法及装置 |
CN113179332B (zh) * | 2021-06-28 | 2021-09-17 | 脉策(上海)智能科技有限公司 | 用于获取配置信息的方法、电子设备和存储介质 |
CN114448786A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 一种网关配置处理方法、装置、系统及计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674528A (zh) * | 2005-03-23 | 2005-09-28 | 北京北方烽火科技有限公司 | 一种基于分级链表和动态xml技术的lcs网管方法 |
EP2264968A1 (en) * | 2009-06-16 | 2010-12-22 | Thomson Licensing | Method and apparatus for UPnP device access control |
CN102316439A (zh) * | 2011-09-09 | 2012-01-11 | 中兴通讯股份有限公司 | 一种实现用户侧设备的固件升级方法和系统 |
CN102567369A (zh) * | 2010-12-27 | 2012-07-11 | 沈阳中科博微自动化技术有限公司 | 用于ic装备的i/o配置工具参数的配置方法 |
CN103001813A (zh) * | 2013-01-08 | 2013-03-27 | 太仓市同维电子有限公司 | 一种用于网管设备中配置管理的方法 |
CN103116606A (zh) * | 2013-01-17 | 2013-05-22 | 上海斐讯数据通信技术有限公司 | 一种数据存储结构 |
-
2014
- 2014-08-25 CN CN201410422845.XA patent/CN104158692B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674528A (zh) * | 2005-03-23 | 2005-09-28 | 北京北方烽火科技有限公司 | 一种基于分级链表和动态xml技术的lcs网管方法 |
EP2264968A1 (en) * | 2009-06-16 | 2010-12-22 | Thomson Licensing | Method and apparatus for UPnP device access control |
CN102567369A (zh) * | 2010-12-27 | 2012-07-11 | 沈阳中科博微自动化技术有限公司 | 用于ic装备的i/o配置工具参数的配置方法 |
CN102316439A (zh) * | 2011-09-09 | 2012-01-11 | 中兴通讯股份有限公司 | 一种实现用户侧设备的固件升级方法和系统 |
CN103001813A (zh) * | 2013-01-08 | 2013-03-27 | 太仓市同维电子有限公司 | 一种用于网管设备中配置管理的方法 |
CN103116606A (zh) * | 2013-01-17 | 2013-05-22 | 上海斐讯数据通信技术有限公司 | 一种数据存储结构 |
Also Published As
Publication number | Publication date |
---|---|
CN104158692A (zh) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104158692B (zh) | 基于xml实现家庭网关数据配置管理的方法 | |
CN101849399A (zh) | 用于基于规则的内容过滤的系统和方法 | |
CN101145157B (zh) | 一种xml格式嵌入式设备特征信息解析方法 | |
JP2001313639A (ja) | ネットワーク構成データ管理システム及び方法並びに記録媒体 | |
CN103081430A (zh) | 用于过滤流数据的方法和装置 | |
CN109815326B (zh) | 对话控制方法及装置 | |
CN103617199B (zh) | 一种操作数据的方法和系统 | |
CN102541638A (zh) | 基于条件的资源布置 | |
CN107291450A (zh) | 一种编程友好型的敏捷代码自动生成方法 | |
WO2020199595A1 (zh) | 基于词袋模型的长文本分类方法、装置、计算机设备及存储介质 | |
CN109104405A (zh) | 二进制协议编码、解码方法和装置 | |
CN110428137A (zh) | 一种风险防控策略的更新方法及装置 | |
CN110007924A (zh) | Yang模型配置界面的自动化构建方法及系统 | |
CN106294151A (zh) | 日志测试方法及装置 | |
CN102591958B (zh) | 基于tcam的确定性有穷状态自动机的匹配方法和装置 | |
CN108804100A (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
JP5514143B2 (ja) | テストデータ生成装置及び方法 | |
CN102742215B (zh) | 对通信设备中配置命令进行清除的方法和装置 | |
US11501045B2 (en) | Method for analyzing a simulation of the execution of a quantum circuit | |
CN107577467A (zh) | 一种TOSCA规范的java实现方法 | |
US11954009B2 (en) | Method for analyzing a simulation of the execution of a quantum circuit | |
WO2014187216A1 (zh) | 数据库结构对象处理方法及装置 | |
JP5514145B2 (ja) | テストデータ生成装置及び方法 | |
CN104468418B (zh) | 中央数据库cdb实现方法及基于cdb的sdn交换机 | |
CN116346711B (zh) | 基于行为树的路由协议表征方法、介质及通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |