CN117170735A - 一种解析编辑yaml文件保留所有格式和注释的方法及系统 - Google Patents

一种解析编辑yaml文件保留所有格式和注释的方法及系统 Download PDF

Info

Publication number
CN117170735A
CN117170735A CN202311074381.3A CN202311074381A CN117170735A CN 117170735 A CN117170735 A CN 117170735A CN 202311074381 A CN202311074381 A CN 202311074381A CN 117170735 A CN117170735 A CN 117170735A
Authority
CN
China
Prior art keywords
yaml
editing
file
node entity
node
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
Application number
CN202311074381.3A
Other languages
English (en)
Inventor
吴志雄
徐春梅
林祖文
许世辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Linewell Software Co Ltd
Original Assignee
Linewell Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN202311074381.3A priority Critical patent/CN117170735A/zh
Publication of CN117170735A publication Critical patent/CN117170735A/zh
Pending legal-status Critical Current

Links

Abstract

本发明涉及一种解析编辑YAML文件保留所有格式和注释的方法及系统,该方法包括:按行读取YAML配置文件,每行以一条字符串数据存储在字符串列表中;遍历字符串列表中每行数据,解析出Key值、Value值以及关联的格式和注释,分别封装成单独的节点实体,并存储在节点实体列表中;根据需要对节点实体列表中相应的节点实体数据进行所需操作,得到操作后的节点实体列表;遍历操作后的节点实体列表中每个节点实体,还原每个节点实体,包括基于节点还原格式规则还原每个节点实体关联的格式和注释,从而重新生成新的YAML配置文件。该方法及系统可以在编辑YAML配置文件时保留原有格式和注释信息,从而保证在提高YAML配置文件编辑效率的同时不丢失格式和注释信息。

Description

一种解析编辑YAML文件保留所有格式和注释的方法及系统
技术领域
本发明涉及计算机技术领域,具体涉及一种解析编辑YAML文件保留所有格式和注释的方法及系统。
背景技术
随着应用拆分微服务化和高可用集群架构下,应用服务数量越来越多,部署难度加大,每个应用服务都需要修改YAML配置文件,而其中不同项目配置文件中,大部分配置项是一样的,导致要重复修改,部署时间成本不断加大,大部分时间消耗在根据现场环境修改配置文件上。
因此,需要一套快速修改配置文件提升部署效率的机制,并且要保留配置文件原有的格式和注释方便二次查阅,这其中的关键技术点就是YAML配置文件的解析和编辑。而业界开源的工具包SnakeYaml、eo-yaml虽然可以解析和编辑文件,但是不能保留文档原有格式和注释。
发明内容
本发明的目的在于提供一种解析编辑YAML文件保留所有格式和注释的方法及系统,该方法及系统可以在编辑YAML配置文件时保留原有格式和注释信息,从而保证在提高YAML配置文件编辑效率的同时不丢失格式和注释信息。
为了实现上述目的,本发明采用的技术方案是:一种解析编辑YAML文件保留所有格式和注释的方法,包括以下步骤:
步骤S1:按行读取YAML配置文件,每行以一条字符串数据存储在字符串列表中;
步骤S2:遍历步骤S1得到的字符串列表中每行数据,解析出Key值、Value值以及关联的格式和注释,分别封装成单独的节点实体,并存储在节点实体列表中;
步骤S3:根据需要对节点实体列表中相应的节点实体数据进行所需操作,得到操作后的节点实体列表;
步骤S4:遍历步骤S3操作后的节点实体列表中每个节点实体,还原每个节点实体,包括基于节点还原格式规则还原每个节点实体关联的格式和注释,从而重新生成新的YAML配置文件,且新的YAML配置文件保留了文件原有格式和注释。
进一步地,步骤S1中,所述YAML配置文件包括文本文件和文本字符串。
进一步地,步骤S2中,关联的格式和注释,包括头部注释、行尾注释、上下节点的层级关系、缩进空格、空行、多行值。
进一步地,步骤S3中,对节点实体数据进行的操作包括查看和修改。
进一步地,对节点实体数据进行修改的方法为:向节点实体列表中传入Key值和要修改的Value值,遍历节点实体列表,查询到匹配的Key值对应的节点实体,并将该节点实体的Value值修改为要修改的Value值,从而得到操作后的节点实体。
进一步地,步骤S4中,所述节点还原格式规则为:
判断是否头部注释,是则生成头部注释;
判断是否行尾注释,是则生成行尾注释;
确定Key的层级,生成对应空格数;
判断是否缩进空格,是则生成缩进空格;
判断是否空行,是则生成空行;
判断是否多行值,是则生成多行值。
进一步地,将所述解析编辑YAML文件保留所有格式和注释的方法应用于YAML配置文件的快速批量编辑,包括以下步骤:
步骤一:配置需要修改的Key、Value公共变量集合;
步骤二:批量导入YAML配置文件,解析并展示到前端编辑器,显示出每个YAML配置文件要替换的公共变量;
步骤三:通过所述解析编辑YAML文件保留所有格式和注释的方法一键替换YAML配置文件中要替换的公共变量,得到新的YAML配置文件并保留文件原有格式和注释;将新的YAML配置文件重新展示到前端编辑器,并与替换前的历史文件进行内容对比,以保证替换内容的准确性;
步骤四:通过步骤三的方法逐一对每个YAML配置文件进行编辑,直至完成所有YAML配置文件的编辑;
步骤五:批量导出编辑完成的YAML配置文件。
进一步地,提供一公共变量配置模块,所述公共变量配置模块具有公共变量编辑功能,包括新增、删除、修改变量,以及变量分组编辑,从而通过公共变量配置模块配置需要修改的Key、Value公共变量集合。
进一步地,提供一YAML文件编辑模块,所述YAML文件编辑模块具有YAML配置文件编辑功能,包括YAML配置文件的批量导入、文本内容展示、编辑、一键替换变量、历史文件对比、批量导出,从而批量导入YAML配置文件,并将其转换为文本内容展示到前端编辑器界面,并且将需要替换的公共变量进行高亮标记并显示。
本发明还提供了一种解析编辑YAML文件保留所有格式和注释的系统,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
与现有技术相比,本发明具有以下有益效果:提供了一种解析编辑YAML文件保留所有格式和注释的方法及系统,该方法及系统解决了现有技术中在解析编辑YAML配置文件时无法保留文件格式和注释的问题,为快速批量编辑YAML配置文件提供了技术支撑;将该方法应用于YAML配置文件的快速批量编辑,可以实现批量替换YAML配置文件中相对应Key的Value值,在提高YAML配置文件编辑效率的同时,不丢失YAML配置文件所有的格式和注释信息。因此,本发明具有很强的实用性和广阔的应用前景。
附图说明
图1是本发明实施例的方法实现流程图;
图2是本发明实施例中将本方法应用于YAML配置文件的快速批量编辑的实现流程图;
图3是本发明实施例中公共变量配置结果示意图;
图4是本发明实施例中YAML配置文件编辑结果示意图;
图5是本发明实施例中YAML配置文件替换对比效果示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
如图1所示,本实施例提供了一种解析编辑YAML文件保留所有格式和注释的方法,包括以下步骤:
步骤S1:按行读取YAML配置文件,每行以一条字符串数据存储在字符串列表中。
其中,YAML配置文件可以是文本文件和文本字符串。
步骤S2:遍历步骤S1得到的字符串列表中每行数据,解析出Key值、Value值以及关联的格式和注释,包括头部注释、行尾注释、上下节点的层级关系、缩进空格、空行、多行值等,然后将解析出的数据分别封装成单独的节点实体,并存储在节点实体列表中。
对于大部分行数据,一行数据封装成一个单独的节点实体。但是对于多行值,将多行值数据封装成一个多行值的节点实体。节点中的key会根据当前层级关系和前面的行数据key通过“.”拼接组装成一级key,例如:YAML文件有这样一个配置:
key1:
key2: abc
那么,key2节点实体这一行数据封装的key为key1.key2。
步骤S3:根据YAML配置文件的编辑需要,对节点实体列表中相应的节点实体数据进行查看、修改等操作,得到操作后的节点实体列表。
在本实施例中,对节点实体数据进行修改的方法为:向节点实体列表中传入Key值和要修改的Value值,遍历节点实体列表,查询到匹配的变量Key对应的节点实体,并将该节点实体的Value值替换修改为要修改的Value值,得到操作后的节点实体。
对所有需操作的节点实体数据进行所需操作后,得到操作后的节点实体列表。
步骤S4:遍历步骤S3操作后的节点实体列表中每个节点实体,还原每个节点实体,包括基于节点还原格式规则还原每个节点实体关联的格式和注释,从而重新生成新的YAML配置文件,且新的YAML配置文件保留了文件原有格式和注释。
其中,所述节点还原格式规则包括:
1)判断是否头部注释,是则生成头部注释;
2)判断是否行尾注释,是则生成行尾注释;
3)确定Key的层级,生成对应空格数;
4)判断是否缩进空格,是则生成缩进空格;
5)判断是否空行,是则生成空行;
6)判断是否多行值,是则生成多行值。
如图2所示,将所述解析编辑YAML文件保留所有格式和注释的方法应用于YAML配置文件的快速批量编辑,包括以下步骤:
步骤一:配置需要修改的Key、Value公共变量集合。
在本实施例中,步骤一通过公共变量配置模块实现。所述公共变量配置模块具有公共变量编辑功能,包括新增、删除、修改变量,以及变量分组编辑,从而通过公共变量配置模块配置需要修改的Key、Value公共变量集合。不同项目的YAML配置文件,它们的部分属性是公共的,比如数据库连接地址、中间件地址等,将这些变量提取出来,配置到公共变量配置模块,就可以对需要修改的Key、Value公共变量进行集中修改,且只需要配置一次。本实施例中通过公共变量配置模块配置公共变量的效果如图3所示。
步骤二:批量导入YAML配置文件,解析并展示到前端编辑器,高亮显示出每个YAML配置文件要替换的公共变量。
在本实施例中,步骤二通过YAML文件编辑模块实现。所述YAML文件编辑模块具有YAML配置文件编辑功能,包括YAML配置文件的批量导入、文本内容展示、编辑、一键替换变量、历史文件对比、批量导出,从而批量导入YAML配置文件,并将其转换为文本内容展示到前端编辑器界面,并且将需要替换的公共变量进行高亮标记并显示。本实施例中通过YAML文件编辑模块导入并显示YAML配置文件的效果如图4所示。
步骤三:通过上述解析编辑YAML文件保留所有格式和注释的方法一键替换YAML配置文件中要替换的公共变量,得到新的YAML配置文件并保留文件原有格式和注释。将新的YAML配置文件重新展示到前端编辑器,并与替换前的历史文件进行内容对比,以保证替换内容的准确性。本实施例中YAML配置文件替换对比效果如图5所示。
步骤四:通过步骤三的方法逐一对每个YAML配置文件进行编辑,直至完成所有YAML配置文件的编辑。
步骤五:批量导出编辑完成的YAML配置文件,重新替换到相应项目的YAML配置文件。
在本实施例中,本方法通过Java具体实现如下:
定义按行读取YAML配置文件的Java方法readAllLines,传入YAML配置文件路径,每行一条字符串数据存储在列表中,返回列表。
定义节点Java实体YamlNode,属性包括:层级关系、键、值、是否为空行、当前行是否为有效配置、头部注释、末尾注释、是否为最后一层配置、是否为多行字符串值、是否为多行数组值、多行值。
定义解析每行YAML配置文件数据的Java方法buildYamlNode,对应解析获取当前层级、换行值、空行、头部注释、文档分隔符、键、值、行末注释,是否有效配置等,封装返回节点Java实体YamlNode。
定义解析YAML配置文件总方法loadYaml,遍历readAllLines返回的列表,使用buildYamlNode方法解析每一行数据,返回解析后的YamlNode列表。
定义修改YamlNode节点值的Java方法setYamlNode,传入对应键和要修改的值,遍历YamlNode节点列表,匹配到对应键后,修改YamlNode节点的值。
定义还原YAML配置文件总方法printYaml,遍历修改完成后的YamlNode列表,对应解析每个YamlNode的属性,是否是空行,是否有头部注释,是否有行末注释,对应键,值等进行数据的拼接还原,最终返回字符串文本数据展示到编辑器。
本实施例还提供了一种解析编辑YAML文件保留所有格式和注释的系统,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

Claims (10)

1.一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,包括以下步骤:
步骤S1:按行读取YAML配置文件,每行以一条字符串数据存储在字符串列表中;
步骤S2:遍历步骤S1得到的字符串列表中每行数据,解析出Key值、Value值以及关联的格式和注释,分别封装成单独的节点实体,并存储在节点实体列表中;
步骤S3:根据需要对节点实体列表中相应的节点实体数据进行所需操作,得到操作后的节点实体列表;
步骤S4:遍历步骤S3操作后的节点实体列表中每个节点实体,还原每个节点实体,包括基于节点还原格式规则还原每个节点实体关联的格式和注释,从而重新生成新的YAML配置文件,且新的YAML配置文件保留了文件原有格式和注释。
2.根据权利要求1所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,步骤S1中,所述YAML配置文件包括文本文件和文本字符串。
3.根据权利要求1所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,步骤S2中,关联的格式和注释,包括头部注释、行尾注释、上下节点的层级关系、缩进空格、空行、多行值。
4.根据权利要求1所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,步骤S3中,对节点实体数据进行的操作包括查看和修改。
5.根据权利要求4所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,对节点实体数据进行修改的方法为:向节点实体列表中传入Key值和要修改的Value值,遍历节点实体列表,查询到匹配的Key值对应的节点实体,并将该节点实体的Value值修改为要修改的Value值,从而得到操作后的节点实体。
6.根据权利要求1所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,步骤S4中,所述节点还原格式规则为:
判断是否头部注释,是则生成头部注释;
判断是否行尾注释,是则生成行尾注释;
确定Key的层级,生成对应空格数;
判断是否缩进空格,是则生成缩进空格;
判断是否空行,是则生成空行;
判断是否多行值,是则生成多行值。
7.根据权利要求1所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,将所述解析编辑YAML文件保留所有格式和注释的方法应用于YAML配置文件的快速批量编辑,包括以下步骤:
步骤一:配置需要修改的Key、Value公共变量集合;
步骤二:批量导入YAML配置文件,解析并展示到前端编辑器,显示出每个YAML配置文件要替换的公共变量;
步骤三:通过所述解析编辑YAML文件保留所有格式和注释的方法一键替换YAML配置文件中要替换的公共变量,得到新的YAML配置文件并保留文件原有格式和注释;将新的YAML配置文件重新展示到前端编辑器,并与替换前的历史文件进行内容对比,以保证替换内容的准确性;
步骤四:通过步骤三的方法逐一对每个YAML配置文件进行编辑,直至完成所有YAML配置文件的编辑;
步骤五:批量导出编辑完成的YAML配置文件。
8.根据权利要求7所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,提供一公共变量配置模块,所述公共变量配置模块具有公共变量编辑功能,包括新增、删除、修改变量,以及变量分组编辑,从而通过公共变量配置模块配置需要修改的Key、Value公共变量集合。
9.根据权利要求7所述的一种解析编辑YAML文件保留所有格式和注释的方法,其特征在于,提供一YAML文件编辑模块,所述YAML文件编辑模块具有YAML配置文件编辑功能,包括YAML配置文件的批量导入、文本内容展示、编辑、一键替换变量、历史文件对比、批量导出,从而批量导入YAML配置文件,并将其转换为文本内容展示到前端编辑器界面,并且将需要替换的公共变量进行高亮标记并显示。
10.一种解析编辑YAML文件保留所有格式和注释的系统,其特征在于,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现如权利要求1-9任一项所述的方法步骤。
CN202311074381.3A 2023-08-24 2023-08-24 一种解析编辑yaml文件保留所有格式和注释的方法及系统 Pending CN117170735A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311074381.3A CN117170735A (zh) 2023-08-24 2023-08-24 一种解析编辑yaml文件保留所有格式和注释的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311074381.3A CN117170735A (zh) 2023-08-24 2023-08-24 一种解析编辑yaml文件保留所有格式和注释的方法及系统

Publications (1)

Publication Number Publication Date
CN117170735A true CN117170735A (zh) 2023-12-05

Family

ID=88942302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311074381.3A Pending CN117170735A (zh) 2023-08-24 2023-08-24 一种解析编辑yaml文件保留所有格式和注释的方法及系统

Country Status (1)

Country Link
CN (1) CN117170735A (zh)

Similar Documents

Publication Publication Date Title
US10042834B2 (en) Dynamic field extraction of data
US8103705B2 (en) System and method for storing text annotations with associated type information in a structured data store
US9740698B2 (en) Document merge based on knowledge of document schema
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
US10698937B2 (en) Split mapping for dynamic rendering and maintaining consistency of data processed by applications
CN112650766A (zh) 数据库数据操作的方法、系统及服务器
CN111104106A (zh) 集成业务流程与通讯报文的可视化开发方法、系统及介质
US20100228794A1 (en) Semantic document analysis
WO2016093839A1 (en) Structuring of semi-structured log messages
JP5747698B2 (ja) 要件管理支援装置
CN113553295A (zh) 一种支持多种文件格式的数据预处理系统
CN117170735A (zh) 一种解析编辑yaml文件保留所有格式和注释的方法及系统
CN115905353A (zh) 关联数据导出、导入方法、装置、设备及存储介质
CN113934748A (zh) 混合型sql脚本文件生成方法、执行方法及装置
CN113361256A (zh) 一种基于Aspose技术的Word文档快速解析方法
US11947957B2 (en) Grouping software applications based on technical facets
JPS6284337A (ja) 仕様書情報解析方式
CN114218895B (zh) 对uof文档进行转换的方法
CN117874218A (zh) 基于大模型的摘要生成方法、装置、设备及存储介质
CN111190872A (zh) 一种可继承可扩展的数据处理方法及其对解析日志的应用
CN117992054A (zh) 文件处理方法及装置
CN114138883A (zh) 一种模板中内聚数据源的正文导出引擎及导出方法
CN114722101A (zh) 一种流程图简化的方法、装置及存储介质
CN114416531A (zh) 一种测试数据生成方法、装置、设备及介质
CN113961192A (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