CN115878744A - 一种scl文件比较方法及系统 - Google Patents
一种scl文件比较方法及系统 Download PDFInfo
- Publication number
- CN115878744A CN115878744A CN202211436242.6A CN202211436242A CN115878744A CN 115878744 A CN115878744 A CN 115878744A CN 202211436242 A CN202211436242 A CN 202211436242A CN 115878744 A CN115878744 A CN 115878744A
- Authority
- CN
- China
- Prior art keywords
- nodes
- node
- child
- pair
- comparison
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于变电站领域通信配置,具体涉及一种SCL文件比较方法及系统。本方案对SCL文件中的各个节点建立对应的包含节点内容的节点模型,避免比较时再进行遍历,省去遍历时间,且在建立节点模型时,仅对节点比对时关心的属性信息及需要的子节点信息建模,因此能够省去对这些节点和属性的比较;在进行节点或其子节点比较时,先将节点内容化为文本,只比较文本内容是否相同且优化了文本比较方式,能够快速判断节点的内容是否存在差异,若不存在差异则能直接省去对节点具体内容的比对;且在比较多节点子节点时通过具有唯一性的关键属性进行匹配,并且将两个文件中各个子节点的关键属性分别存为链表和哈希表,保证多节点子节点的结果顺序以及检索速度。
Description
技术领域
本发明属于变电站领域通信配置,具体涉及一种SCL文件比较方法及系统。
背景技术
SCL全称为变电站配置描述语言,是IEC 61850-6标准规定的一种描述智能变电站内各IED之间通信配置的XML扩展语言。一般有四种SCL文件:描述变电站规范的SSD文件、描述IED能力的ICD文件、描述全站完整配置SCD文件和描述单个IED配置的CID文件,SCL文件模型如图1所示。
随着变电站的规模越来越大,采集的信息也越来越多,导致配置文件也越来越大,目前一个变电站的配置文件通常能达到两百多兆,而且每次变电站的改扩建都会对SCL文件进行修改,变电站的技术规范要求每次修改都要完成归档时,都要与历史版本进行比较,生成差异报告。
目前的SCL文件比较的常用做法是使用常规的XML文件文本比较算法进行比较,从根节点进行遍历两个文件,获取节点的所有属性和子节点,逐一嵌套递归比较。这种做法的好处是比较全面,任何一点修改都能展示出来,缺点是比较太过繁琐,使用了太多的遍历和比较操作,效率低下。变电站技术规范要求的SCL文件的比较结果只关心一些关键信息,比如IED的描述信息、虚端子连线信息、通信信息等,而私有节点属性、刀闸位置、IED的顺序等信息的修改并不重要,并不需要体现在差异报告中,因此需要一种快速的能够比较出关键信息差异的SCL文件比较方法。
申请公开号为CN109145167A的中国发明专利申请公开了一种ICD文件与SCD中对应IED的内容差异比较方法,其中提到了一种文件比较方法,该方法根据节点的关键属性匹配比较的节点,然后进行非关键属性及子孙节点的比较,但这种方法比较繁琐,在如变电站改扩建这种SCL文件只出现少量改动的场景下,仍然需要做大量的比较,耗时较长,比较效率较低。
发明内容
本发明的目的在于提供一种SCL文件比较方法及系统,用于解决现有技术中在SCL文件只出现少量改动的情况仍然需要做大量的比较导致的比较效率较低的问题。
为了实现上述目的,本发明提供了一种SCL文件比较方法,步骤如下:
1)分别读取两个SCL文件,然后将两个待比较文件的根节点SCL节点作为第一对获取的匹配节点;
2)根据SCL标准模型,对匹配节点进行比较;所述标准模型包括各个节点对应的节点模型,每个节点模型的内容包括该节点的标签名、属性和该节点所包含的子节点;所述属性包括非关键属性,所述非关键属性指的是进行节点比较时关心的节点属性;
比较过程为:对一对匹配节点对应的节点模型的内容进行初次提取,将一对匹配节点对应的初次提取内容分别格式化为文本,直接对这一对匹配节点对应的文本进行比较,若所述文本相同,则判定为这一对匹配节点相同,结束比较;否则判定这一对匹配节点有差异,再提取这一对匹配节点的非关键属性以及所包含的子节点并进行比较,记录比较结果。
上述技术方案的有益效果为:对SCL文件中的各个节点建立对应的包含节点属性及子节点信息的节点模型,避免比较时再进行遍历,省去遍历时间;且在进行节点比较时,先将对应的节点模型的内容分别格式化为文本,进行文本比对;进行文本比较时只比较文本内容是否相同,此时并不关心具体差异,该比对方式能够直观快速地初步判断出匹配节点的内容是否存在差异,若不存在差异则能够直接省去对节点具体内容的比对过程,节约比较时间。
进一步地,每个节点模型的内容还包括该节点是否关心子节点具体差异以及该节点所包含的子节点的详情;
步骤2)中,在对一对匹配节点所包含的子节点进行比较时,如果这一对匹配节点不关心子节点具体差异,则将这一对匹配节点的子节点文本内容进行文本比较,得到比较结果后记录并结束比较;所述节点的子节点文本内容指的是该节点在SCL文件中对应的内容格式化为文本并去掉当前匹配节点对应的根节点内容后剩余的内容;
如果这一对匹配节点关心子节点具体差异且非关键属性不同,则仅比较这一对匹配节点的子节点文本内容,若相同则结束比较,记录比较结果;否则继续比较这一对匹配节点的子节点详情;
如果该节点关心子节点具体差异且非关键属性相同,则直接继续比较这一对匹配节点的子节点详情。
上述技术方案的有益效果为:在进行节点的子节点比较时,先将对应的节点模型的内容分别格式化为文本,进行文本比较;进行文本比较时只比较文本内容是否相同,此时并不关心具体差异,该比对方式能够直观快速地初步判断出匹配节点的子节点是否存在差异,若不存在差异则能够直接省去对子节点具体内容的比对过程。
进一步地,比较子节点详情时,如果一对匹配节点中的某个子节点为单节点子节点,则直接根据该子节点的标签名,在这对匹配节点中的另一个节点的子节点中找到与该子节点相互匹配的子节点,将这两个相互匹配的子节点作为一对新的匹配节点,并按照步骤2)中的比较过程对这一对新的匹配节点进行比较;
其中,若节点中的某个子节点的标签名仅对应这一个子节点,则该子节点记为单节点子节点。
上述技术方案的有益效果为:根据单节点子节点的特性,直接采用标签名对子节点进行匹配,能够快速准确地识别出各个相互匹配的单节点子节点,提高整体的比较效率。
进一步地,步骤2)中,所述属性还包括关键属性;对节点对应的节点模型的内容进行初次提取时的提取内容至少包括该节点的关键属性,并在初次提取后对所述关键属性进行拼接,计算哈希值,作为该节点的哈希值;
比较子节点详情时,如果其中一个待比较文件中的匹配节点的一个子节点为多节点子节点,则将其中一个待比较文件设为旧文件,另一个待比较文件设为新文件,将新文件中与所述子节点的标签名相同的所有子节点均按照步骤2)的方式进行初次提取后存为链表,链表中每个表项对应一个子节点及其哈希值;并将旧文件中与所述子节点的标签名相同的所有子节点均按照步骤2)的方式进行初次提取后存为哈希表,然后对旧文件的哈希表和新文件的链表进行比较:遍历新文件的链表,根据每个表项的哈希值,在旧文件的哈希表中查找是否存在哈希值相同的子节点,若存在则就将该哈希值对应的两个子节点作为一对新的匹配节点,按照步骤2)中的比较过程对这一对新的匹配节点进行比较;
其中,若节点中的某个子节点的标签名对应多个子节点,则该子节点记为多节点子节点。
上述技术方案的有益效果为:某类子节点存在多个即该子节点为多节点子节点的情况下,比较其详情时通过具有唯一性的关键属性进行子节点之间的匹配,并且将其中一个待比较文件中的该类子节点对应的各个子节点的关键属性按顺序存为链表,因此能够保证多节点子节点的结果顺序;将另一个待比较文件中的该类子节点对应的各个子节点的关键属性直接存为哈希表,然后对旧文件的哈希表和新文件的链表进行比较,能够保证检索速度。
进一步地,若旧文件的哈希表中不存在与链表某表项的哈希值相同的子节点时,则将该表项对应的子节点设为新增节点;遍历新文件的链表后,再遍历旧文件的哈希表,如果旧文件的哈希表中存在子节点没进行过比较,则将该子节点设为删除节点,记录比较结果以及新增节点、删除节点的出现情况及其关键属性信息。
上述技术方案的有益效果为:能够更全面地反映两个待比较文件之间的差异,避免由于整个节点删除或新增导致没有比较对象产生的比较结果漏报。
进一步地,在建立SCL标准模型时,仅对所有需要比较的节点进行建模,且每个节点的属性仅包括在进行节点比较时需要关心的属性。
上述技术方案的有益效果为:在建立节点模型时,仅对节点在进行比对时关心的属性信息及子节点信息建模,并且在节点不需要了解子节点差异详情时,也不对该节点具体的子节点进行建模,因此能够省去对这些节点和属性的比较。
进一步地,步骤2)中,对一对匹配节点对应的文本进行比较的方式为:
先比较这一对匹配节点分别对应的文本的长度,长度不同直接判定这一对匹配节点有差异;如果长度相同,再分别计算并比对一对匹配节点对应的整体文本的哈希值、前半部分文本的哈希值和后半部分文本的哈希值,如果均相同则判定为这一对匹配节点对应的文本相同,否则判定这一对匹配节点有差异。
上述技术方案的有益效果为:先比较文本的长度,长度不同直接判定这一对匹配节点有差异,则能够省去对文本具体内容的比较;如果长度相同,再分别比对整体文本、前半部分文本和后半部分文本的哈希值,采用哈希值表征文本内容进行比较能够简化比较对象,而选用三种哈希值共同参与比较则能够最大限度地避免哈希冲突。
进一步地,节点对应的初次提取内容仅包括该节点的标签名和属性。
上述技术方案的有益效果为:能够简化后续进行文本比对时文本的内容,进一步减少比对的数据量。
进一步地,对SCL文件中的IED节点进行比较时,使用多线程方式进行比较。
上述技术方案的有益效果为:将在SCL文件中数据量最大、比较耗时最长的IED数据使用多线程进行比较,可进一步压缩比较时间。
本发明还提供了一种SCL文件比较系统,包括处理器,所述处理器用于执行程序指令,以实现如上述的SCL文件比较方法。该SCL文件比较系统能够实现与上述的SCL文件比较方法相同的有益效果。
附图说明
图1为本发明背景技术中智能变电站内SCL文件模型的示意图;
图2为本发明SCL文件比较方法实施例中SCL文件比较方法的流程框图;
图3为本发明SCL文件比较方法实施例中节点比较方式的具体流程框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明了,以下结合附图及实施例,对本发明进行进一步详细说明。
SCL文件比较方法实施例:
本实施例提供了一种SCL文件比较方法的技术方案,步骤如下:
1)建立SCL标准模型模板,作为创建SCL文件模型的依据,相当于进行节点比较时的信息提取库,该标准模型包括各个节点对应的节点模型,每个节点模型的内容包括该节点的标签名、属性和该节点所包含的子节点;这里的属性包括关键属性值(关键属性)和非关键属性值(非关键属性),这里的非关键属性指的是进行节点比对时需要关心的属性;节点模型的内容还包括该节点是否关心子节点具体差异以及该节点所包含的子节点的详情。
由于SCL模型是固化的,而且节点类型是有限的,所以直接建好SCL的标准模型,每种节点均对应不同的节点模型,如每种节点都有什么类型的属性(包括关键属性和非关键属性)、包含哪些子节点以及这些子节点的详情,避免比较时再进行遍历,省去遍历时间;建模时有以下几个关键点:
①在比较时,有的子节点和属性是不关心的,因此不需要进行建模;比如IED节点的Services节点不需要进行比较,所以在对IED节点建模时不需要创建Services子节点;AccessPoint节点的Desc属性在进行比较时不关心,所以在对AccessPoint节点进行建模时不需要读取该属性,即AccessPoint节点对应的节点模型的内容不需要包括Desc属性,这样就省去了一些节点和属性的比较;
②有的节点不需要了解子节点差异详情,比如DOI节点只关心该节点的内容是否修改,而不关心具体的变化内容,所以对DOI节点建模时不需要对其具体的子节点也进行建模,即DOI节点对应的节点模型仅记录节点内容(包括属性和子节点)是否有变化即可,无需记录子节点详情。
因此,本实施例中,仅对SCL模型的所有需要比较的节点进行建模,且每个节点的属性仅包括在进行节点比较时需要关心的属性;则每个节点模型通常包含的内容如表1所示(如果不关心相应的信息则节点模型不包含与该信息相关的内容):
表1
2)如图2所示,比较开始前先分别读取两个SCL文件,即将两个文件的内容解析并加载到内存中,格式为原始XML文件;然后根据SCL标准模型模板从根节点SCL节点开始从XML文件中提取节点信息,创建SCL模型(节点模型),然后对节点模型进行比较;其中,从XML文件中提取节点信息的提取原则是,能不读就不读,能少读就少读,能晚读就晚读,该原则通过以下比较方式体现:
比较开始时,先将两个待比较文件的根节点SCL节点作为第一对匹配节点,按照步骤1)的标准模型模板,分别对一对匹配节点对应的节点模型的内容进行初次提取,本实施例中,为减少提取的数据量,初次提取仅提取节点的标签和关键属性信息,得到节点对应的SCL初始模型,然后对两个模型进行比较;参照图3,每个节点模型在进行初次提取时,先根据SCL模型读取该节点的关键属性,将该节点的所有关键属性进行拼接并相应计算Hash值(哈希值),作为该节点的Hash值(此时不读非关键属性和子节点信息);该节点的Hash值即为该节点的唯一标识,仅通过比对两个节点的哈希值,即可判断两个节点是否为一对匹配节点;则对两个待比较文件中的一对匹配节点进行比较的具体比较过程为:
将一对匹配节点对应的初次提取内容分别格式化为文本,直接对这一对匹配节点对应的文本进行比较,若文本相同,则判定为这一对匹配节点相同,结束比较;否则判定这一对匹配节点有差异,读取这一对匹配节点的非关键属性以及所包含的子节点并进行比较,记录比较结果。
其中,进行文本比较时只比较文本内容是否相同,此时并不关心具体差异;本实施例中,为简化比较内容,格式化文本时只使用节点模型的内容中的标签名和属性两种信息(该属性值包括关键属性值和非关键属性值),如对IED节点模型的内容进行格式时,其标签名和属性信息为:<IED name=”E1Q1SB22”type=”PCS931”>,则格式化后的文本的内容为IED E1Q1SB22 PCS931。
本实施例中,为进一步简化比对步骤,在对一对匹配节点对应的文本进行比较时,先比较这一对匹配节点分别对应的文本的长度,长度不同直接判定这一对匹配节点有差异;如果长度相同,再分别计算并比对一对匹配节点对应的整体文本的哈希值、前半部分文本的哈希值和后半部分文本的哈希值,如果均相同则判定为这一对匹配节点对应的文本相同,否则判定这一对匹配节点有差异;由于仅比较一对哈希值可能会存在哈希冲突,即两个文本的哈希值恰好相同,则本实施例同时比对整体文本的哈希值、前半部分文本的哈希值和后半部分文本的哈希值,能够最大限度地避免哈希冲突;在其他实施例中,如果对效率的要求没有特别严格,但追求准确性,也可以直接对文本进行挨个字符比对。
判定出一对匹配节点有差异后,则再提取这一对匹配节点的非关键属性以及所包含的子节点并进行比较;初次提取时,节点模型内容中暂只读取标签名和关键属性,关键属性作为节点的唯一标识,用于在两个文件的模型中查找配对的节点进行比较,非关键属性和子节点信息在两个比较文件中找到配对节点后再根据需要进行再提取;比如读IED节点时,只读IED的标签名“IED”和关键属性“name”,其它数据暂不读取,在比较两个name相同的IED时,如果文本相同,整个IED的模型就不读了,直接记录IED相同。如果不同再根据上述的流程图读取非关键属性和子节点信息;由此通过无条件初次提取和有条件再提取的节点信息提取方式,便能够实现能不读就不读,能少读就少读的整体构思,从而大大降低比较时间。
其中,对非关键属性的比较仅需记录比较结果,而在对一对匹配节点所包含的子节点进行比较时,如果这一对匹配节点不关心子节点具体差异,则将这一对匹配节点的子节点文本内容进行文本比较,此处的文本比较也可采用上述根据文本长度和哈希值进行文本比较的方式,以简化比较步骤,得到比较结果后记录并结束比较;这里的节点的子节点文本内容指的是该节点对应的SCL文件的XML内存结构的内容格式化为文本并去掉根节点内容后剩余的内容;这里的根节点内容指的是以当前的匹配节点为根节点时,该匹配节点的对应的根节点内容,该内容中不包含该节点的子节点信息,也即子节点文本内容中仅包括当前匹配节点对应的表1中的序号5的子节点详情信息以及这些子节点分别对应的表1中的序号1-5的信息,而不包括当前匹配节点对应的表1中的序号1-4的信息。
如果这一对匹配节点关心子节点具体差异且非关键属性不同,则先仅比较这一对匹配节点的子节点文本内容,若相同则结束比较,记录比较结果;否则继续比较这一对匹配节点的子节点详情;如果该节点关心子节点具体差异且非关键属性相同,则说明当前比对的匹配节点之间的差异必然是由子节点带来的,因此可以直接继续比较这一对匹配节点的子节点详情。
由于之前已经判断出这一对匹配节点之间存在差异,但不清楚差异到底是非关键属性的差异的还是子节点的差异,或者是非关键属性和子节点均有差异,因此先通过子节点文本比较确定到底是哪种差异情况,只有发现子节点存在差异且关心子节点差异的具体内容,才继续对子节点的详情进行比对,否则均直接记录文本比较结果并结束比较,因此能够节省大量冗余的比较过程,提高比较效率。
在比较子节点详情时,如果一对匹配节点中的一个子节点为单节点子节点,则直接根据该子节点的标签名,在这对匹配节点中的另一个子节点中找到与该子节点相互匹配的子节点,将这两个相互匹配的子节点作为一对新的匹配节点,并按照步骤2)中的提取和比较过程对这一对新的匹配节点进行比较。
其中,若节点中的某个子节点的标签名仅对应这一个子节点,则该子节点记为单节点子节点;例如SCL节点模型中的Communication子节点,在一个SCL节点模型中,仅存在一个标签名为Communication的子节点,因此该子节点相对于SCL节点模型即为单节点子节点。
如果其中一个待比较文件中的匹配节点的某个子节点为多节点子节点,则将其中一个待比较文件设为旧文件,另一个待比较文件设为新文件;由于节点的关键属性具有唯一性,如果两个节点的所有关键属性值相同,则这两个节点必然为一对匹配节点,因此采用节点在初次提取获取的SCL初始模型初始化时由所有关键属性拼接后计算的节点的哈希值进行子节点间的匹配;保证多节点子节点的结果顺序,将新文件中与该多节点子节点的标签名(节点类型)相同的所有子节点均按照步骤2)的初次提取方式提取节点对应的SCL初始模型后存为链表,链表中每个表项对应一个子节点及其哈希值,能够将子节点按照顺序排列;为保证检索速度,将旧文件中与该多节点子节点的标签名相同的所有子节点均按照步骤2)的初次提取方式提取节点对应的SCL初始模型后存为哈希表,然后对旧文件的哈希表和新文件的链表进行比较:由于链表能够保证比较结果的顺序,哈希表则便于比对查找,因此遍历新文件的链表,根据每个表项的哈希值,在旧文件的哈希表中查找是否存在哈希值相同的子节点,若存在则就将该哈希值对应的两个子节点作为一对新的匹配节点,按照步骤2)中的比较过程对这一对新的匹配节点进行比较;比较过程中,若旧文件的哈希表中不存在与新文件的链表某表项的哈希值相同的子节点时,则将该表项对应的子节点设为新增节点;遍历新文件的链表后,再遍历旧文件的哈希表,如果旧文件的哈希表中存在子节点没进行过比较,则将该子节点设为删除节点,相应记录比较结果,并记录新增节点、删除节点的出现情况及其关键属性信息,如:新增一个()节点、删除一个()节点等,括号内记录该节点的关键属性信息。
其中,若节点中的某个子节点的标签名对应多个子节点,则该子节点记为多节点子节点;例如DataTypeTemplates节点模型中的DOType子节点,在一个DataTypeTemplates节点模型中,存在多个标签名为DOType的子节点,因此该子节点相对于DataTypeTemplates节点模型即为多节点子节点。
在开始进行步骤2)后,只要存在未比对且需要比较子节点详情的匹配节点,就继续按照上述比较子节点详情的方式,嵌套步骤2)的提取和比较过程对其进行比较,直至不存在未比对且需要比较子节点详情的匹配节点为止,比较结束,输出比较结果,完成对两个待比较SCL文件的全部比较。
并且,根节点SCL节点的IED子节点属于多节点子节点,其需要比较的数据量很大,在上述的比较方式中,如果数据处理方式相同,则IED节点的比较用时超整体比较时间的90%;因此,本实施例中,考虑到IED数据在SCL文件中数据量最大、比较耗时最长的特性,所以在比较IED节点时,使用多线程进行比较,可进一步压缩比较时间。
SCL文件比较系统实施例:
本实施例提供了一种SCL文件比较系统的技术方案,该比较系统包括处理器,该处理器用于执行程序指令,以实现如上述SCL文件比较方法实施例中的比较方法。由于该比较系统的具体原理及实现方式已经在上述的SCL文件比较方法实施例中进行了详细说明,此处不再赘述。
本发明具有以下特点:
1)对SCL文件中的各个节点建立对应的包含节点属性及子节点信息的节点模型,避免比较时再进行遍历,省去遍历时间;
2)在建立节点模型时,仅对节点在进行比对时关心的属性信息及子节点信息建模,并且在节点不需要了解子节点差异详情时,也不对该节点具体的子节点进行建模,因此能够省去对这些节点和属性的比较;
3)在进行节点比较或节点的子节点比较时,先将对应的节点模型的内容分别格式化为文本,进行文本比对;进行文本比较时只比较文本内容是否相同,此时并不关心具体差异,该比对方式能够直观快速地初步判断出匹配节点的内容是否存在差异,若不存在差异则能够直接省去对节点具体内容的比对过程;
4)进行文本比较时,先比较文本的长度,长度不同直接判定这一对匹配节点有差异,能够省去对文本具体内容的比较;如果长度相同,再分别比对整体文本、前半部分文本和后半部分文本的哈希值,采用哈希值表征文本内容进行比较能够简化比较对象,而选用三种哈希值共同参与比较则能够最大限度地避免哈希冲突。
5)某类子节点存在多个(多节点子节点)的情况下,比较其详情时通过具有唯一性的关键属性进行子节点之间的匹配,并且将其中一个待比较文件中的该类子节点对应的各个子节点的关键属性按顺序存为链表,因此能够保证多节点子节点的结果顺序;将另一个待比较文件中的该类子节点对应的各个子节点的关键属性直接存为哈希表,然后对旧文件的哈希表和新文件的链表进行比较,能够保证检索速度。
6)在比较IED节点时,使用多线程进行比较,能够进一步压缩比较时间。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (10)
1.一种SCL文件比较方法,其特征在于,步骤如下:
1)分别读取两个SCL文件,然后将两个待比较文件的根节点SCL节点作为第一对获取的匹配节点;
2)根据SCL标准模型,对匹配节点进行比较;所述标准模型包括各个节点对应的节点模型,每个节点模型的内容包括该节点的标签名、属性和该节点所包含的子节点;所述属性包括非关键属性,所述非关键属性指的是进行节点比较时关心的节点属性;
比较过程为:对一对匹配节点对应的节点模型的内容进行初次提取,将一对匹配节点对应的初次提取内容分别格式化为文本,直接对这一对匹配节点对应的文本进行比较,若所述文本相同,则判定为这一对匹配节点相同,结束比较;否则判定这一对匹配节点有差异,再提取这一对匹配节点的非关键属性以及所包含的子节点并进行比较,记录比较结果。
2.根据权利要求1所述的SCL文件比较方法,其特征在于,每个节点模型的内容还包括该节点是否关心子节点具体差异以及该节点所包含的子节点的详情;
步骤2)中,在对一对匹配节点所包含的子节点进行比较时,如果这一对匹配节点不关心子节点具体差异,则将这一对匹配节点的子节点文本内容进行文本比较,得到比较结果后记录并结束比较;所述节点的子节点文本内容指的是该节点在SCL文件中对应的内容格式化为文本并去掉当前匹配节点对应的根节点内容后剩余的内容;
如果这一对匹配节点关心子节点具体差异且非关键属性不同,则仅比较这一对匹配节点的子节点文本内容,若相同则结束比较,记录比较结果;否则继续比较这一对匹配节点的子节点详情;
如果该节点关心子节点具体差异且非关键属性相同,则直接继续比较这一对匹配节点的子节点详情。
3.根据权利要求2所述的SCL文件比较方法,其特征在于,比较子节点详情时,如果一对匹配节点中的一个子节点为单节点子节点,则直接根据该子节点的标签名,在这对匹配节点中的另一个节点的子节点中找到与该子节点相互匹配的子节点,将这两个相互匹配的子节点作为一对新的匹配节点,并按照步骤2)中的比较过程对这一对新的匹配节点进行比较;
其中,若节点中的某个子节点的标签名仅对应这一个子节点,则该子节点记为单节点子节点。
4.根据权利要求2所述的SCL文件比较方法,其特征在于,步骤2)中,所述属性还包括关键属性;对节点对应的节点模型的内容进行初次提取时的提取内容至少包括该节点的关键属性,并在初次提取后对所述关键属性进行拼接,计算哈希值,作为该节点的哈希值;
比较子节点详情时,如果其中一个待比较文件中的匹配节点的某个子节点为多节点子节点,则将其中一个待比较文件设为旧文件,另一个待比较文件设为新文件,将新文件中与所述子节点的标签名相同的所有子节点均按照步骤2)的方式进行初次提取后存为链表,链表中每个表项对应一个子节点及其哈希值;并将旧文件中与所述子节点的标签名相同的所有子节点均按照步骤2)的方式进行初次提取后存为哈希表,然后对旧文件的哈希表和新文件的链表进行比较:遍历新文件的链表,根据每个表项的哈希值,在旧文件的哈希表中查找是否存在哈希值相同的子节点,若存在则就将该哈希值对应的两个子节点作为一对新的匹配节点,按照步骤2)中的比较过程对这一对新的匹配节点进行比较;
其中,若节点中的某个子节点的标签名对应多个子节点,则该子节点记为多节点子节点。
5.根据权利要求4所述的SCL文件比较方法,其特征在于,若旧文件的哈希表中不存在与链表某表项的哈希值相同的子节点时,则将该表项对应的子节点设为新增节点;遍历新文件的链表后,再遍历旧文件的哈希表,如果旧文件的哈希表中存在子节点没进行过比较,则将该子节点设为删除节点,记录比较结果以及新增节点、删除节点的出现情况及其关键属性信息。
6.根据权利要求1-5任一项所述的SCL文件比较方法,其特征在于,在建立SCL标准模型时,仅对所有需要比较的节点进行建模,且每个节点的属性仅包括在进行节点比较时需要关心的属性。
7.根据权利要求1-5任一项所述的SCL文件比较方法,其特征在于,步骤2)中,对一对匹配节点对应的文本进行比较的方式为:
先比较这一对匹配节点分别对应的文本的长度,长度不同直接判定这一对匹配节点有差异;如果长度相同,再分别计算并比对一对匹配节点对应的整体文本的哈希值、前半部分文本的哈希值和后半部分文本的哈希值,如果均相同则判定为这一对匹配节点对应的文本相同,否则判定这一对匹配节点有差异。
8.根据权利要求4所述的SCL文件比较方法,其特征在于,节点对应的初次提取内容仅包括该节点的标签名和关键属性。
9.根据权利要求1-5任一项所述的SCL文件比较方法,其特征在于,对SCL文件中的IED节点进行比较时,使用多线程方式进行比较。
10.一种SCL文件比较系统,其特征在于,包括处理器,所述处理器用于执行程序指令,以实现如权利要求1-9任一项所述的SCL文件比较方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211436242.6A CN115878744A (zh) | 2022-11-16 | 2022-11-16 | 一种scl文件比较方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211436242.6A CN115878744A (zh) | 2022-11-16 | 2022-11-16 | 一种scl文件比较方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878744A true CN115878744A (zh) | 2023-03-31 |
Family
ID=85760053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211436242.6A Pending CN115878744A (zh) | 2022-11-16 | 2022-11-16 | 一种scl文件比较方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878744A (zh) |
-
2022
- 2022-11-16 CN CN202211436242.6A patent/CN115878744A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3846048A1 (en) | Online log analysis method, system, and electronic terminal device thereof | |
CN104778258B (zh) | 一种面向协议数据流的数据抽取方法 | |
CN102870116B (zh) | 内容匹配方法和装置 | |
CN111324577B (zh) | 一种Yml文件读写的方法及装置 | |
CN113553420A (zh) | 基于知识图谱的电网故障处理规程推荐方法和系统 | |
CN103188267B (zh) | 一种基于dfa的协议解析方法 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN114153980A (zh) | 知识图谱构建方法和装置、检查方法、存储介质 | |
CN112069305B (zh) | 数据筛选方法、装置及电子设备 | |
CN111611788B (zh) | 一种数据处理的方法及装置、电子设备、存储介质 | |
CN111553001B (zh) | 一种从ifc文件中提取或删除构件的方法 | |
CN117473984A (zh) | 一种txt文档内容章节划分方法和系统 | |
CN115878744A (zh) | 一种scl文件比较方法及系统 | |
CN106933844B (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
CN109145167B (zh) | Icd文件与scd中对应ied的内容差异比较方法 | |
CN113779025B (zh) | 一种区块链中分类数据检索效率的优化方法、系统及应用 | |
CN115017161A (zh) | 一种结合虚拟dom更新树形数据结构方法、装置及应用 | |
CN115238655A (zh) | 一种json数据编辑方法和装置 | |
KR101927689B1 (ko) | Cim 계통도 처리 방법 | |
CN110581823B (zh) | 一种非公开数据库协议请求数据包的解析方法 | |
CN113779200A (zh) | 目标行业词库的生成方法、处理器及装置 | |
CN112328246A (zh) | 页面组件生成方法、装置、计算机设备及存储介质 | |
CN115242612B (zh) | 一种故障诊断方法和装置 | |
US20100325151A1 (en) | Method and apparatus for searching in a memory-efficient manner for at least one query data element | |
CN111259505B (zh) | 架空输电线路的提取方法和装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |