1.一种CIM模型的数据解析方法,其特征在于,包括:构建数据元类,所述数据元类中包括预设的数据属性和方法;从XML文件中逐行读取数据信息,根据正则表达式成对地对逐行读取的所述数据信息进行正则匹配,得到CIM模块,并将所述CIM模块存入向量列表中;构建第一哈希表,以字符串为键将所述数据元类所构建的新类存储在所述第一哈希表中,在初始状态时所述第一哈希表为空;构建第二哈希表,以所述字符串为键将实例哈希表存入第二哈希表中;将所述实例哈希表以所述CIM模块对应的唯一编码字符串ID作为键将所述CIM模块对应生成的实例对象进行存储;逐行遍历所述向量列表中任一所述CIM模块中的记录,生成并存储所述CIM模块对应的类或对象。
2.如权利要求1所述的一种CIM模型的数据解析方法,其特征在于,所述从XML文件中逐行读取数据信息,根据正则表达式成对地对逐行读取的所述数据信息进行正则匹配,得到CIM模块,并将所述CIM模块存入向量列表中,具体包括:从XML文件中逐行读取所述数据信息,根据XML语法规范,以正则表达式p 0 ="<cim.*rdf:ID.*>",以及p 1 ="</cim.*>"成对地对逐行读取的数据信息进行正则匹配;设与p 0 匹配命中的行为r i ,与p 1 匹配命中的行为r j ;则r i 行至r j 内容构成一个完整的CIM模块M k ,并将该模块存入向量列表M中;其中,M=[M 1 ,M 2 ,…,M k ,…,M n ],M k =[r i ,r i+1 ,…,r j-1 ,r j ]。
3.如权利要求2所述的一种CIM模型的数据解析方法,其特征在于,所述构建第一哈希表,以字符串为键将所述数据元类所构建的新类存储在所述第一哈希表中,在初始状态时所述第一哈希表为空,具体包括:构建所述第一哈希表Cls_map,以字符串cls_name为键将所述数据元类所构建的新类some_class存储在所述第一哈希表Cls_map中,初始状态时Cls_map为空其中,Cls_map<string cls_name,class some_class>。
4.如权利要求3所述的一种CIM模型的数据解析方法,其特征在于,所述构建第二哈希表,以所述字符串为键将实例哈希表存入第二哈希表中,具体包括:构建所述第二哈希表Obj_map,以所述字符串cls_name为键将实例哈希表ID_map存入所述第二哈希表Obj_map中;所述第二哈希表Obj_map以所述CIM模块M k 对应的唯一编码字符串ID作为键将所述CIM模块M k 对应生成的实例对象some_object进行储存;其中,Obj_map<stringcls_name,ID_map<string ID,Cls_map[cls_name] some_object>>。
5.如权利要求4所述的一种CIM模型的数据解析方法,其特征在于,所述构建数据元类,所述数据元类中包括预设的数据属性和方法,具体包括:构建数据元类mcs,所述数据元类mcs中预置以下属性与方法:属性1:cls_name,记录当前生成类的名称;方法1:instance_init,支持所生成类生成新的实例;方法2:get_attr,支持所生成类所生成的实例获取本实例的属性;方法3:attr_setter,支持所生成类所生成的实例对本实例的属性进行赋值;方法4:attr_init,支持所生成类所生成的实例为本实例初始化新的属性;方法5:has_attr,支持所生成类所生成的实例查找本实例是否含有某个属性;方法6:is_single_bus_device,支持所生成类所生成的实例判断本实例是否是一个单一端口元件;方法7:affiliate_substation_func_assign,支持所生成类所生成的实例返回本实例所从属的变电站信息;方法8:nomination_voltage_func_assign,支持所生成类所生成的实例返回本实例所对应的电压等级和基准电压信息;方法9:get_zone_func,支持所生成类所生成的实例返回本实例所属的区域信息;方法10:get_area_func,支持所生成类所生成的实例返回本实例所属的分区信息。
6.如权利要求5所述的一种CIM模型的数据解析方法,其特征在于,所述逐行遍历所述向量列表中任一所述CIM模块中的记录,生成并存储所述CIM模块对应的类或对象,具体包括:遍历到第r i 行时,执行如下步骤:根据CIM模型描述的规则及p 0 与r i 的匹配关系,从r i 的第5个字符开始,至空格字符结束,提取出所述CIM模块M k 在XML中所规定的类别字段,记为module_type;从r i 的子字符串"rdf:ID=“"后第1个字符开始,至r i 行倒数第3个字符结束,提取出模块M k 在XML中所指定的识别ID,记为module_id;若module_type不存在于所述第一哈希表Cls_map的键中,则调用数据元类mcs构建module_type对应的类cls,令cls.cls_name=module_type,并以cls.cls_name作为键,将键值对<cls.cls_name,cls>存入所述第一哈希表Cls_map中;若module_type已经存在于所述第一哈希表Cls_map的键中,则说明当前模块M k 所属类别cls已经由元类mcs建立;调用类Cls_map[module_type]的初始化函数instance_init将所述CIM模块M k 实例化为Obj k ;遍历到第r i+1 至r j-1 行时,执行如下步骤:按照XML的语法规则,根据模块M k 中各行对当前实例的描述内容,调用类Cls_map[module_type]中由mcs构建的实例操作方法2至方法5,对实例Obj k 的各项属性进行初始化与赋值;遍历到第r j 行时,执行如下步骤:将键值对<module_id,Obj k >存入所述实例哈希表ID_map中,同时更新所述第二哈希表Obj_map。
7.一种CIM模型的数据解析装置,其特征在于,包括:元类构建单元,用于构建数据元类,所述数据元类中包括预设的数据属性和方法;数据获取单元,用于从XML文件中逐行读取数据信息,根据正则表达式成对地对逐行读取的所述数据信息进行正则匹配,得到CIM模块,并将所述CIM模块存入向量列表中;第一哈希表构建单元,用于构建第一哈希表,以字符串为键将所述数据元类所构建的新类存储在所述第一哈希表中,在初始状态时所述第一哈希表为空;第二哈希表构建单元,用于构建第二哈希表,以所述字符串为键将实例哈希表存入第二哈希表中;第一解析单元,用于将所述实例哈希表以所述CIM模块对应的唯一编码字符串ID作为键将所述CIM模块对应生成的实例对象进行存储;第二解析单元,用于逐行遍历所述向量列表中任一所述CIM模块中的记录,生成并存储所述CIM模块对应的类或对象。
8.一种CIM模型的数据解析装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的一种CIM模型的数据解析方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6中任意一项所述的一种CIM模型的数据解析方法。