CN109241151A - 一种数据结构的转换方法、装置及电子设备 - Google Patents
一种数据结构的转换方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109241151A CN109241151A CN201710513079.1A CN201710513079A CN109241151A CN 109241151 A CN109241151 A CN 109241151A CN 201710513079 A CN201710513079 A CN 201710513079A CN 109241151 A CN109241151 A CN 109241151A
- Authority
- CN
- China
- Prior art keywords
- data structure
- set membership
- inclusion relation
- daughter
- father
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请公开了一种数据结构的转换方法、装置以及电子设备。其中,所述数据结构的转换方法,包括:获取线性数据结构;根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;根据所述包含关系,确定各元素之间的父子关系;根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。所述技术方案通过将线性数组结构中的各个数组元素的位置信息和宽高信息生成一个树形数据结构的元素集合,所述树形数据结构可使用文档流布局,解析生成树形结构的文档流界面,将无规律的数组结构的数据记录转换为有规律的树结构的数据记录,因此达到具有较好的宽高自适应性的目的。
Description
技术领域
本申请涉及数据转换技术领域,具体涉及一种数据结构的转换方法。本申请同时涉及一种数据结构的转换装置以及一种电子设备。
背景技术
数据库或文件中存储的数据记录集合,通常以线性数组结构的方式进行存储。以线性数据结构存储的数据记录是无规律的,例如:线性数组之间的数组元素没有定位和布局上的直接关系,因此在使用文档流布局创建数组元素时,只能使用绝对定位方式依次对每一个数组元素进行创建,因此创建出的每一个数组元素不具备宽高自适应性。
发明内容
本申请提供一种数据结构的转换方法,以解决现有技术中的上述问题。本申请另外提供一种数据结构的转换装置以及一种电子设备。
本申请提供一种数据结构的转换方法,所述数据结构的转换方法,包括:
获取线性数据结构;
根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;
根据所述包含关系,确定各元素之间的父子关系;
根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
可选的,所述元素的属性信息,至少包括:
所述元素的位置信息以及宽高信息。
可选的,所述根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系,包括:
根据所述线性数据结构中各元素的位置信息以及宽高信息,判断各元素之间在空间上是否重叠;
若是,则根据各重叠元素的宽高信息,获取各元素之间在空间上的包含关系。
可选的,所述包含关系,包括:
半包含、全包含以及重合。
可选的,所述根据所述包含关系,确定各元素之间的父子关系,包括:
若所述包含关系为半包含关系,则获取具有半包含关系的各元素;
将所述元素的宽高信息,与具有半包含关系的对应元素的宽高信息进行比对,获取宽高间距;
将所述宽高间距大于预设的阈值的所述元素作为父元素,将具有半包含关系对应的元素作为子元素。
可选的,在所述确定各元素之间的父子关系的步骤之后,包括:
判断是否具父元素数目大于预设数目的元素;
若具有,则获取所述元素的各个父元素;
确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素。
可选的,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为半包含关系,则以绝对定位的方式,记录所述父子关系中的子元素。
可选的,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为全包含关系,以所述父子关系中的子元素的属性信息,按照预设的顺序记录所述父子关系中的子元素。
可选的,所述以所述子元素的属性信息,按照预设的顺序记录所述父子关系中的子元素,包括:
根据所述子元素的位置信息,获取与所述父子关系中父元素的边距;
基于所述子元素的位置信息,按照从上至下的顺序,记录所述子元素的宽高信息以及,与所述父子关系中父元素的边距。
可选的,若具有相同边距的子元素时,所述记录所述子元素与所述父子关系中父元素的边距,包括:
根据所述具有相同边距的子元素的位置信息,确定所述子元素的相对位置;
基于所述子元素的相对位置,按照从左至右的顺序,记录所述子元素与所述父子关系中父元素的边距。
可选的,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为重合关系,则以绝对定位的方式,记录所述父子关系中的子元素,以及所述子元素的子元素。
可选的,在所述形成由所述线性数据结构中的元素组成的树形数据结构的步骤之后,包括:
解析所述树形数据结构,形成文档流布局界面。
可选的,所述线性数据结构,包括:数组。
可选的,所述线性数据结构中的元素,包括:界面元素。
相应的,本申请实施例还提供了一种数据结构的转换装置,所述数据结构的转换装置,包括:
线性结构获取单元,用于获取线性数据结构;
包含关系获取单元,用于根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;
父子关系获取单元,用于根据所述包含关系,确定各元素之间的父子关系;
树形结构创建单元,用于根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
此外,本申请实施例还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数据结构转换程序,所述程序在被所述处理器读取执行时,执行如下操作:获取线性数据结构;根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;根据所述包含关系,确定各元素之间的父子关系;根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
与现有技术相比,本申请具有以下优点:
本申请提供的一种数据结构的转换方法、装置以及电子设备,通过获取线性数据结构;根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;根据所述包含关系,确定各元素之间的父子关系;根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。所述技术方案通过将线性数组结构中的各个数组元素的位置信息和宽高信息生成一个树形数据结构的元素集合,所述树形数据结构可使用文档流布局,解析生成树形结构的文档流界面,将无规律的数组结构的数据记录转换为有规律的树结构的数据记录,因此达到具有较好的宽高自适应性的目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的数据结构的转换方法的流程图;
图2示出了根据本申请的实施例提供的获取线性数据结构的示意图;
图3示出了根据本申请的实施例提供的根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系的示意图;
图4示出了根据本申请的实施例提供的确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素的示意图;
图5示出了根据本申请的实施例提供的根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构的实现过程的示意图;
图6示出了根据本申请的实施例提供的数据结构的转换装置的示意图;
图7示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种数据结构的转换方法;本申请实施例同时涉及一种数据结构的转换装置以及一种电子设备。在下面的实施例中逐一进行详细说明。
目前,数据库或文件中存储的数据记录集合,通常以线性数组结构的方式进行存储。以线性数据结构存储的数据记录是无规律的,线性数组之间的数组元素没有定位和布局上的直接关系,因此在创建数组元素时,只能使用绝对定位方式依次对每一个数组元素进行创建。由此可见,通过线性数组创建出的每一个数组元素不具备宽高自适应性。针对这一问题,在本申请实施例中,通过将线性数组结构中的各个数组元素的位置信息和宽高信息生成一个树形数据结构的元素集合,所述树形数据结构可使用文档流布局,解析生成树形结构的文档流界面,将无规律的数组结构的数据记录转换为有规律的树结构的数据记录,实现了线性数据结构到树形数据结构的格式转化,因此达到具有较好的宽高自适应性的目的。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的数据结构作简要说明。
线性数据结构,是一个有序数据元素的集合。常用的线性数据结构包括:线性表,栈,队列,双队列,数组,串。
树形数据结构,是具有层次的嵌套结构。树形数据结构可表示层次关系,也可表示从属关系、并列关系。树形数据结构指的是数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要的非线性数据结构。在树形数据结构中,树根结点没有父结点,其余每个结点有且只有一个前驱结点(父结点)。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。
绝对定位(absolute),是通过top,bottom,left,right进行的定位。选取其最近的父级定位元素,相当于自己向父级元素查找出的第一个带有position属性的元素进行偏移,绝对定位使元素的位置与文档流无关,原来在文档流中所占用的位置不保留
相对定位(relative):相对于自己在文档流中的位置进行偏移,并且原来在文档流中占有的位置得以保留。通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
本申请的实施例提供了一种数据结构的转换方法,所述流数据结构的转换方法将无规律的数组结构转换为有规律的树结构,实现了线性数据结构到树形数据结构的格式转化。所述数据结构的转换方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的数据结构的转换方法的流程图。
所述数据结构的转换方法,包括:
步骤S101,获取线性数据结构。
在本实施例中,所述获取线性数据结构,可以采用如下方式实现:对图形文件进行解析,从所述图形文件中获取所述线性数据结构。
例如:所述图形文件包括:psd文件,则使用Photoshop开放工具对输入的所述psd文件进行图层解析,从所述psd文件中获取取线性数据结构。
需要说明的是,psd(Photoshop Document)文件是一种图形文件格式,是图像处理软件Photoshop的专用格式。这种格式可以存储Photoshop中所有的图层,通道、参考线、注解和颜色模式等信息。在保存图像时,若图像中包含有层,则一般都用psd文件格式保存。
在本实施例中,还可以使用其他形式,或其他格式的图形文件作为线性数据结构的输入源,在此不做限定。例如:通过通过手工拖拽编辑的方式创建数组元素,从而获取线性数据结构。
在本实施例中,对图形文件进行解析后,获取的所述线性数据结构,包括但不限于:一维数组,或类一维数组的json对象。
需要说明的是,json(JavaScript Object Notation)对象是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。在JS语言中,一切都是对象,因此,任何支持的类型都可以通过json对象来表示,例如字符串、数字、对象、数组等。
在具体实施时,所述获取线性数据结构,是将所述图形文件进行解析后,对所述图形文件内的界面元素进行拆分,并将拆分出的每一个所述界面元素,作为所述线性数据结构中的元素,从而通过所述元素形成并获取所述线性数据结构。
需要说明的是,所述图形文件内的界面元素,可包括文字、图片、链接、按钮、标题、文本框视窗、下拉式菜单等。
下面通过一个具体的例子说明所述步骤S101获取线性数据结构的实现过程。
请参考图2,其示出了根据本申请的实施例提供的获取线性数据结构的示意图。
由图2可知,所述图形文件内的界面元素包括:图片、文字1、文字2、文字3、以及链接,对所述图形文件进行解析后,获取到5个界面元素,并将上述5个界面元素图片、文字1、文字2、文字3、以及链接作为元素,形成并获取所述线性数据结构。
需要说明的是,所述对所述图形文件进行解析,获取到的界面元素中携带用于描述所述界面元素在所述图形文件中位置的属性信息,所以在以所述界面元素作为元素形成的所述线性数据结构内,各个所述元素会携带对应的所述界面元素的属性信息。
其中,所述界面元素携带的属性信息,至少包括:所述界面元素在所述图形文件中的位置信息以及宽高信息。
步骤S103,根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系。
在本实施例中,所述根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系,可以采用如下方式实现:根据用于描述所述线性数据结构中各元素在空间上的属性信息,获取各元素之间在空间上的包含关系。
需要说明的是,用于描述所述线性数据结构中各元素在空间上的属性信息,至少包括:元素的位置信息以及宽高信息。
可以理解的,所述线性数据结构中各元素是指:界面元素。所述元素的位置信息,包括:所述元素对应的界面元素,在原图形文件中,X轴坐标的偏移值以及Y轴坐标的偏移值;所述元素的宽高信息,包括:所述元素对应的界面元素,在原图形文件中的高度信息以及宽度信息。例如:图片的高度以及宽度,或文字的行间距等。
在本实施例中,由于所述元素的位置信息是以所述元素的最顶端以及最左端距离原图形文件的左上角坐标(0,0)为基准的偏移值,而所述元素本身具有一定的宽度以及高度,所以在获取所述线性数据结构中各元素的包含关系时,需要同时以元素的位置信息以及宽高信息作为对比条件进行比对,则在执行步骤S103根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系时,具体包括如下步骤:
根据所述线性数据结构中各元素的位置信息以及宽高信息,判断各元素之间在空间上是否重叠;
若是,则根据各重叠元素的宽高信息,获取各元素之间在空间上的包含关系。
下面通过一个具体的例子说明所述步骤S103根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系的实现过程。
请参考图3,其示出了根据本申请的实施例提供的根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系的示意图。
需要说明的是,根据可能出现的包含关系可分为3种情况:半包含、全包含以及重合,下面均以图片1、图片2以及图片3为例对3种情况进行说明。
根据各元素(本例子中为图片)的位置信息确定在坐标系中的位置,并以所述元素的宽高信息形成图片1、图片2以及图片3的示意图。
当图片2的位置信息(X轴坐标的偏移值以及Y轴坐标的偏移值)均大于图片1的位置信息(由于位置信息是以所述元素的最顶端以及最左端距离原图形文件的左上角坐标(0,0)为基准的偏移值,所以图片2的X轴坐标的偏移值大于图片1时,图片2的顶边会在图片1的下方,同样的道理,图片2的Y轴坐标的偏移值大于图片1时,图片2的最左边会在图片1的右方),且图片2的宽高信息均小于图片1的宽高信息时,图片2重叠于图片1,且图片2在图片1的内部,即:图片1全包含图片2。
当图片2的X轴坐标的偏移值小于图片1的X轴坐标的偏移值,图片2的Y轴坐标的偏移值大于图片1的Y轴坐标的偏移值,且图片2的宽度信息大于Y轴坐标的偏移值的差时,图片2会与图片1具有部分重叠;同样的当图片3的的位置信息均大于图片1的位置信息时,图片3有可能与与图片1具有部分重叠(图3中图片3与图片1发生重叠),即:图片1半包含图片2以及图片3。
当图片2的位置信息等于图片1的位置信息,且图片2的宽高信息等于图片1的宽高信息时,图片2完全重叠于图片1,即:图片2重合与图片1。
需要说明的是,当图片1与图片2没有发生重叠关系时,图片1与图片则不具有包含关系。
步骤S105,根据所述包含关系,确定各元素之间的父子关系。
在本实施例中,所述根据所述包含关系,确定各元素之间的父子关系,可以采用如下方式实现:当两元素之间的包含关系为全包含时,将被包含元素作为子元素,将另一元素作为父元素;当两元素之间的包含关系为半包含时,对比两元素的宽高信息,将宽高信息较大的所述元素作为父元素,将宽高信息较小的所述元素作为子元素;当两元素之间的包含关系为重合时,根据两元素在结构上的关系确定两元素的之间的父子关系。
在本实施例中,所述当两元素之间的包含关系为半包含时,对比两元素的宽高信息,将宽高信息较大的所述元素作为父元素,将宽高信息较小的所述元素作为子元素,可以采用如下方式实现:
若所述包含关系为半包含关系,则获取具有半包含关系的各元素;
将所述元素的宽高信息,与具有半包含关系的对应元素的宽高信息进行比对,获取宽高间距;
将所述宽高间距大于预设的阈值的所述元素作为父元素,将具有半包含关系对应的元素作为子元素。
在具体实施时,所述获取具有半包含关系的各元素时,是获取具有半包含关系的所有元素组(由于包含关系时两个元素之间的位置关系,所以所述元素组是由2个元素组成),并针对于每个元素组内的两个元素的宽高信息获取宽高间距,获取宽高间距的计算方式如下:
(c1.width–c2.width)+(c1.height–c2.height)>0
其中,c1是指具有半包含关系的元素组中的一个元素,c2是指具有半包含关系的元素组中的另一个元素,width是指元素的宽度信息,height是指元素的高度信息,所述预设的阈值为0。
需要说明的是,在计算时先以所述具有半包含关系的元素组中的一个元素作为c1进行计算后,若所述宽高间距大于0,则以当前c1作为父元素;若所述宽高间距小于0,则以当前c2作为父元素。
可以理解的,在本步骤中是根据所述包含关系,确定各个元素的父子关系,但由于在步骤S103中,获取的是各个元素与其他元素之间在空间上的包含关系,所以在本步骤中,各个元素可能会在空间上与多个元素之间具有包含关系,所以当所述元素被多个元素包含时,所述元素会具有多个父元素,需要根据各父元素与所述元素之间的距离进行竞争,获取所述元素的优选父元素,则在所述确定各元素之间的父子关系的步骤之后,需要执行如下步骤:
判断是否具父元素数目大于预设数目的元素;
若具有,则获取所述元素的各个父元素;
确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素。
在本实施例中,所述预设数目可以为一,则所述判断是否具父元素数目大于预设数目的元素,是判断是否具有至少两个父元素的元素;若具有,则根据确定了父子关系,获取对应所述元素的父元素。
下面通过一个具体的例子说明确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素的实现过程。
请参考图4,其示出了根据本申请的实施例提供的确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素的示意图。
若只具有三个元素C1,C2以及C3,且父子关系包括C1→C2,C1→C3,C2→C3时,根据对各个元素进行判断后,元素C3具有大于预设数目(一个)的父元素C1以及C2;则获取父元素C1以及C2,并以父元素C1以及C2作为子元素,确定父元素C1以及C2的父子关系,由于元素C1没有父元素(说明C1为根节点),元素C2具有父元素C1(C1→C2),在上述父子关系中C2为子元素,则说明元素C2相比于元素C1距离元素C3更近,所以以元素C2作为元素C1的唯一父元素。
在确定各元素之间的父子关系后,会针对每组父子关系,根据父元素包含子元素的包含关系对子元素进行记录。由于包含关系具有半包含、重合以及全包含三种方式,所以下面分别以三种方式对记录子元素进行说明。
当父元素包含子元素的包含关系为半包含关系,会将所述子元素的属性信息以绝对定位的方式进行记录。
可以理解的,是选取所述父子关系中的父元素,以关键字top,bottom,left,right等记录所述父子关系中子元素的位置信息以及宽高信息,即:相对于所述父元素的偏移值。
当父元素包含子元素的包含关系为重合关系,会将所述子元素,以及所述子元素的子元素的属性信息以绝对定位的方式进行记录。
可以理解的,是选取所述父子关系中的父元素,以关键字top,bottom,left,right等记录所述父子关系中子元素的位置信息以及宽高信息,并根据已记录的所述子元素的父子关系,确定所述子元素的子元素,并以关键字top,bottom,left,right等记录所述子元素的子元素的位置信息以及宽高信息,直至记录到叶子元素。
需要说明的是,所述叶子元素是离散数学当中的概念。一棵树当中没有子元素(即度为0)的元素,称为叶子元素,简称“叶子”。又称为终端元素。
当父元素包含子元素的包含关系为全包含关系,以所述父子关系中的子元素的属性信息,与对应的所述父元素的位置信息,获取偏移量,按照预设的顺序记录所述偏移量,以及所述子元素的宽高信息。
可以理解的,所述偏移量,是以所述子元素的Y轴坐标的偏移值(距离(0,0)的偏移值)与所述父元素的Y轴坐标的偏移值(距离(0,0)的偏移值),获取所述子元素与所述父元素之间Y轴坐标的偏移值,将所述子元素与所述父元素之间Y轴坐标的偏移值作为所述偏移量,即:所述子元素与所述父元素之间的边距(上边距)。
由于父元素与子元素之间是一对多的关系,所以所述父元素可以具有多个子元素,则当父元素包含子元素的包含关系为全包含关系,是以所述父元素的各个子元素距离所述父元素的边距的远近关系的顺序(子元素从上至下的顺序,即:由近至远)记录所述子元素的宽高信息以及,与所述父子关系中父元素的边距。
作为一种优选的实施方式,当父元素包含子元素的包含关系为全包含关系,记录所述偏移量,以及所述子元素的宽高信息时,可以只记录所述子元素的高度信息,以减少存储量。
需要说明的是,当父元素包含子元素的包含关系为全包含关系时,所述父元素的子元素可能具有相同的边距(即:同行的子元素),若所述父元素具有相同边距的子元素时,根据所述具有相同边距的子元素的位置信息,确定所述子元素的相对位置,并基于所述子元素的相对位置,按照从左至右的顺序,记录所述子元素与所述父子关系中父元素的边距。
可以理解的,由于所述子元素的边距相同,则说明所述子元素的Y轴坐标的偏移值相同,所以所述子元素在空间上处于同行,所以所述确定所述子元素的相对位置,是根据所述子元素的X轴坐标的偏移值确定水平方向上,所述子元素之间的相对位置,并在记录同行的各个子元素时,是以所述父元素的各个子元素距离所述父元素的边距的远近关系的顺序(子元素从左至右的顺序,即:由近至远)记录同行的各个子元素的宽高信息以及,与所述父子关系中父元素的边距。
步骤S107,根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
在本实施例中,所述根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构,可以采用如下方式实现:根据所确定的父子关系,,并通过各个子元素与对应的父元素之间的边距的值的顺序,形成由所述线性数据结构中的元素组成的树形数据结构。
下面通过一个具体的例子说明所述步骤S107根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构的实现过程。
请参考图5,其示出了根据本申请的实施例提供的根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构的实现过程的示意图。
由图5可知,所述图形文件内的界面元素包括:容器1、容器2、图片1、文字1、图片2、容器3、文字2、以及文字3,对所述图形文件进行解析后,获取到7个界面元素,并将上述8个界面元素容器1、容器2、图片1、文字1、图片2、容器3、文字2、以及文字3,作为元素,形成并获取所述线性数据结构;并根据所述线性数据结构确定的各元素之间的父子关系,包括:容器1→容器2,容器1→容器3,容器2→图片1,图片1→文字1,图片1→图片2,容器3→文字2,容器3→文字3。
其中容器1全包含于容器2以及容器3,容器2以及容器3为兄弟元素,由于容器2的偏移量小于容器3的偏移量,所以以容器2至容器3的顺序记录容器2以及容器3,并记录容器2以及容器3的偏移量,以及宽高信息;
图片1重合于容器2(图片1铺满了容器2),所以以绝对定位的方式记录图片1;由于图片1是重合子元素,且图片1具有子元素文字1以及图片2,所以以文字1至图片2的顺序以绝对定位的方式记录文字1以及图片2;
容器3全包含于文字2以及文字3,文字2以及文字3为兄弟元素,由于文字2与文字3具有相同的边距,所以基于文字2与文字3的X轴坐标的偏移值确定水平方向上的相对位置,文字2的X轴坐标的偏移值小于文字3的X轴坐标的偏移值(说明文字2)距离容器3更近,则以文字2至文字3的顺序记录文字2以及文字3,并记录文字2以及文字3的偏移量,以及宽高信息。
在本实施例中,在形成由所述线性数据结构中的元素组成的树形数据结构后,可以将所述树形数据结构解析渲染,输出为文档流布局结构界面,所述将所述树形数据结构解析渲染,输出为文档流布局结构界面,可以采用如下方式实现:通过递归的方式,解析所述树形结构数据中的每一个元素,并以结构顺序将所述树形数据结构输出为常规的文档流布局结构界面。
需要说明的是,所述渲染是指:以所述树形数据结构构建渲染树,对各个元素进行界面布局(置计算、样式计算),然后根据渲染树对界面进行绘制的过程。
在上述的实施例中,提供了一种数据结构的转换方法,与上述数据结构的转换方法相对应的,本申请还提供了一种数据结构的转换装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述数据结构的转换装置实施例如下:
请参考图6,其示出了根据本申请的实施例提供的数据结构的转换装置的示意图。
所述数据结构的转换装置,包括:线性结构获取单元601、包含关系获取单元603、父子关系获取单元605以及树形结构构建单元607;
所述线性结构获取单元601,用于获取线性数据结构;
所述包含关系获取单元603,用于根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;
所述父子关系获取单元605,用于根据所述包含关系,确定各元素之间的父子关系;
所述树形结构构建单元607,用于根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
可选的,所述包含关系获取单元603,具体用于根据所述线性数据结构中各元素的位置信息以及宽高信息,获取各元素之间在空间上的包含关系。
可选的,所述包含关系获取单元603,包括:重叠判断子单元以及包含关系获取子单元;
所述重叠判断子单元,用于根据所述线性数据结构中各元素的位置信息以及宽高信息,判断各元素之间在空间上是否重叠;
所述包含关系获取子单元,用于接收所述所述重叠判断子单元的判断结果,若是,则根据各重叠元素的宽高信息,获取各元素之间在空间上的包含关系。
可选的,所述包含关系获取单元603,具体用于根据所述线性数据结构中各元素的位置信息以及宽高信息,获取各元素之间在空间上的半包含关系、全包含关系以及重合关系。
可选的,所述父子关系获取单元605,包括:半包元素获取子单元、宽高间距获取子单元以及父子元素确定子单元;
所述半包元素获取子单元,用于若所述包含关系为半包含关系,则获取具有半包含关系的各元素;
所述宽高间距获取子单元,用于将所述元素的宽高信息,与具有半包含关系的对应元素的宽高信息进行比对,获取宽高间距;
所述父子元素确定子单元,用于将所述宽高间距大于预设的阈值的所述元素作为父元素,将具有半包含关系对应的元素作为子元素。
可选的,所述数据结构的转换装置,还包括:元素数目判断单元、父元素获取单元以及父元素确定单元;
所述元素数目判断单元,用于在所述确定各元素之间的父子关系之后,判断是否具父元素数目大于预设数目的元素;
所述父元素获取单元,用于接收所述元素数目判断单元的判断结果,若具有,则获取所述元素的各个父元素;
所述父元素确定单元,用于确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素。
可选的,所述数据结构的转换装置,还包括:绝对定位记录单元;
所述绝对定位记录单元,用于在所述根据所述包含关系,确定各元素之间的父子关系之后,若所述包含关系为半包含关系,则以绝对定位的方式,记录所述父子关系中的子元素。
可选的,所述数据结构的转换装置,还包括:全包含子元素记录单元;
所述全包含子元素记录单元,用于在所述根据所述包含关系,确定各元素之间的父子关系之后,若所述包含关系为全包含关系,以所述子元素的属性信息,按照预设的顺序记录所述父子关系中的子元素。
可选的,所述子元素记录单元,包括:边距获取子单元以及边距记录子单元;
所述边距获取子单元,用于根据所述子元素的位置信息,获取与所述父子关系中父元素的边距;
所述边距记录子单元,用于基于所述子元素的位置信息,按照从上至下的顺序,记录所述子元素的宽高信息以及,与所述父子关系中父元素的边距。
可选的,若具有相同边距的子元素时,所述边距记录子单元,包括:相对位置确定子单元以及边距相对记录子单元;
所述相对位置确定子单元,用于根据所述具有相同边距的子元素的位置信息,确定所述子元素的相对位置;
所述边距相对记录子单元,用于基于所述子元素的相对位置,按照从左至右的顺序,记录所述子元素与所述父子关系中父元素的边距。
可选的,所述数据结构的转换装置,还包括:重合元素记录单元;
所述重合元素记录单元,用于在所述根据所述包含关系,确定各元素之间的父子关系之后,若所述包含关系为重合关系,则以绝对定位的方式,记录所述父子关系中的子元素,以及所述子元素的子元素。
可选的,所述数据结构的转换装置,还包括:文档流生成单元;
所述文档流生成单元,用于在所述形成由所述线性数据结构中的元素组成的树形数据结构之后,解析所述树形数据结构,形成文档流布局界面。
可选的,所述线性结构获取单元601,具体用于获取数组。
可选的,所述包含关系获取单元603,具体用于根据所述线性数据结构中各界面元素的属性信息,获取各界面元素之间在空间上的包含关系。
在上述的实施例中,提供了一种数据结构的转换方法以及一种数据结构的转换装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图7,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:处理器701;存储器703;
所述存储器703,用于存储数据结构转换程序,所述程序在被所述处理器读取执行时,执行如下操作:获取线性数据结构;根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;根据所述包含关系,确定各元素之间的父子关系;根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
例如,所述电子设备为一台计算机,所述计算机获取线性数据结构;并根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;再根据所述包含关系,确定各元素之间的父子关系;最后根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。由于本电子设备使用上述数据结构的转换方法,相关之处请参见上述数据结构的转换方法的实施例说明,此处不再赘述。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (16)
1.一种数据结构的转换方法,其特征在于,包括:
获取线性数据结构;
根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;
根据所述包含关系,确定各元素之间的父子关系;
根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
2.根据权利要求1所述的数据结构的转换方法,其特征在于,所述元素的属性信息,至少包括:
所述元素的位置信息以及宽高信息。
3.根据权利要求2所述的数据结构的转换方法,其特征在于,所述根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系,包括:
根据所述线性数据结构中各元素的位置信息以及宽高信息,判断各元素之间在空间上是否重叠;
若是,则根据各重叠元素的宽高信息,获取各元素之间在空间上的包含关系。
4.根据权利要求3所述的数据结构的转换方法,其特征在于,所述包含关系,包括:
半包含、全包含以及重合。
5.根据权利要求4所述的数据结构的转换方法,其特征在于,所述根据所述包含关系,确定各元素之间的父子关系,包括:
若所述包含关系为半包含关系,则获取具有半包含关系的各元素;
将所述元素的宽高信息,与具有半包含关系的对应元素的宽高信息进行比对,获取宽高间距;
将所述宽高间距大于预设的阈值的所述元素作为父元素,将具有半包含关系对应的元素作为子元素。
6.根据权利要求5所述的数据结构的转换方法,其特征在于,在所述确定各元素之间的父子关系的步骤之后,包括:
判断是否具父元素数目大于预设数目的元素;
若具有,则获取所述元素的各个父元素;
确定各个父元素之间的父子关系,以所述父子关系中的子元素作为所述元素的唯一父元素。
7.根据权利要求5所述的数据结构的转换方法,其特征在于,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为半包含关系,则以绝对定位的方式,记录所述父子关系中的子元素。
8.根据权利要求5所述的数据结构的转换方法,其特征在于,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为全包含关系,以所述父子关系中的子元素的属性信息,按照预设的顺序记录所述父子关系中的子元素。
9.根据权利要求8所述的数据结构的转换方法,其特征在于,所述以所述子元素的属性信息,按照预设的顺序记录所述父子关系中的子元素,包括:
根据所述子元素的位置信息,获取与所述父子关系中父元素的边距;
基于所述子元素的位置信息,按照从上至下的顺序,记录所述子元素的宽高信息以及,与所述父子关系中父元素的边距。
10.根据权利要求9所述的数据结构的转换方法,其特征在于,若具有相同边距的子元素时,所述记录所述子元素与所述父子关系中父元素的边距,包括:
根据所述具有相同边距的子元素的位置信息,确定所述子元素的相对位置;
基于所述子元素的相对位置,按照从左至右的顺序,记录所述子元素与所述父子关系中父元素的边距。
11.根据权利要求5所述的数据结构的转换方法,其特征在于,在所述根据所述包含关系,确定各元素之间的父子关系的步骤之后,包括:
若所述包含关系为重合关系,则以绝对定位的方式,记录所述父子关系中的子元素,以及所述子元素的子元素。
12.根据权利要求1所述的数据结构的转换方法,其特征在于,在所述形成由所述线性数据结构中的元素组成的树形数据结构的步骤之后,包括:
解析所述树形数据结构,形成文档流布局界面。
13.根据权利要求1所述的数据结构的转换方法,其特征在于,所述线性数据结构,包括:数组。
14.根据权利要求1所述的数据结构的转换方法,其特征在于,所述线性数据结构中的元素,包括:界面元素。
15.一种数据结构的转换装置,其特征在于,包括:
线性结构获取单元,用于获取线性数据结构;
包含关系获取单元,用于根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;
父子关系获取单元,用于根据所述包含关系,确定各元素之间的父子关系;
树形结构创建单元,用于根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
16.一种电子设备,其特征在于,所述电子设备,包括:
处理器;
存储器,用于存储数据结构转换程序,所述程序在被所述处理器读取执行时,执行如下操作:获取线性数据结构;根据所述线性数据结构中各元素的属性信息,获取各元素之间在空间上的包含关系;根据所述包含关系,确定各元素之间的父子关系;根据所确定的父子关系,形成由所述线性数据结构中的元素组成的树形数据结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710513079.1A CN109241151B (zh) | 2017-06-29 | 2017-06-29 | 一种数据结构的转换方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710513079.1A CN109241151B (zh) | 2017-06-29 | 2017-06-29 | 一种数据结构的转换方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241151A true CN109241151A (zh) | 2019-01-18 |
CN109241151B CN109241151B (zh) | 2022-05-10 |
Family
ID=65083202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710513079.1A Active CN109241151B (zh) | 2017-06-29 | 2017-06-29 | 一种数据结构的转换方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241151B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857696A (zh) * | 2019-04-30 | 2020-10-30 | 腾讯科技(深圳)有限公司 | 一种视觉稿的结构调整方法、装置、设备和介质 |
CN113312318A (zh) * | 2021-06-15 | 2021-08-27 | 上海哔哩哔哩科技有限公司 | 文件显示方法、装置及计算机设备 |
CN116051627A (zh) * | 2023-02-02 | 2023-05-02 | 杭州比智科技有限公司 | 一种基于svg与Lottie实现图形自适应的方法及系统 |
WO2024027830A1 (zh) * | 2022-08-05 | 2024-02-08 | 抖音视界有限公司 | 一种元素绘制方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138052A1 (en) * | 2003-12-22 | 2005-06-23 | International Business Machines Corporation | Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees |
CN1828594A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 对象关系型数据的数据模型 |
US20080043018A1 (en) * | 2000-06-19 | 2008-02-21 | Alexander Keller | Instant ray tracing |
CN101894395A (zh) * | 2010-07-22 | 2010-11-24 | 西安电子科技大学 | 一种计算机图形的点模型几何信息的各向异性表示方法 |
CN102184223A (zh) * | 2011-05-06 | 2011-09-14 | 南京工程学院 | 空间求交中的一种高效数据结构及其算法 |
CN102395965A (zh) * | 2009-04-17 | 2012-03-28 | 弗兰霍菲尔运输应用研究公司 | 用于在数据库中搜索对象的方法 |
CN105279177A (zh) * | 2014-07-03 | 2016-01-27 | 北京联嘉众赢网络技术有限公司 | 一种数据结构转换方法及装置 |
CN106326427A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 线性结构到树形结构的数据结构转换方法 |
CN106326251A (zh) * | 2015-06-23 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 待展示对象的全尺寸适配方法及装置 |
US20170109383A1 (en) * | 2015-10-16 | 2017-04-20 | Seven Bridges Genomics Inc. | Biological graph or sequence serialization |
-
2017
- 2017-06-29 CN CN201710513079.1A patent/CN109241151B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080043018A1 (en) * | 2000-06-19 | 2008-02-21 | Alexander Keller | Instant ray tracing |
US20050138052A1 (en) * | 2003-12-22 | 2005-06-23 | International Business Machines Corporation | Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees |
CN1828594A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 对象关系型数据的数据模型 |
CN102395965A (zh) * | 2009-04-17 | 2012-03-28 | 弗兰霍菲尔运输应用研究公司 | 用于在数据库中搜索对象的方法 |
CN101894395A (zh) * | 2010-07-22 | 2010-11-24 | 西安电子科技大学 | 一种计算机图形的点模型几何信息的各向异性表示方法 |
CN102184223A (zh) * | 2011-05-06 | 2011-09-14 | 南京工程学院 | 空间求交中的一种高效数据结构及其算法 |
CN105279177A (zh) * | 2014-07-03 | 2016-01-27 | 北京联嘉众赢网络技术有限公司 | 一种数据结构转换方法及装置 |
CN106326251A (zh) * | 2015-06-23 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 待展示对象的全尺寸适配方法及装置 |
US20170109383A1 (en) * | 2015-10-16 | 2017-04-20 | Seven Bridges Genomics Inc. | Biological graph or sequence serialization |
CN106326427A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 线性结构到树形结构的数据结构转换方法 |
Non-Patent Citations (2)
Title |
---|
LASKAR R H 等: ""Sample reduction using recursive and segmented data structure analysis"", 《JOURNAL OF ENGINEERING & COMPUTER INNOVATIONS》 * |
陈旭飞 等: ""异构数据库系统数据转换方法设计与实现"", 《微型机与应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857696A (zh) * | 2019-04-30 | 2020-10-30 | 腾讯科技(深圳)有限公司 | 一种视觉稿的结构调整方法、装置、设备和介质 |
CN113312318A (zh) * | 2021-06-15 | 2021-08-27 | 上海哔哩哔哩科技有限公司 | 文件显示方法、装置及计算机设备 |
WO2024027830A1 (zh) * | 2022-08-05 | 2024-02-08 | 抖音视界有限公司 | 一种元素绘制方法、装置、设备及存储介质 |
CN116051627A (zh) * | 2023-02-02 | 2023-05-02 | 杭州比智科技有限公司 | 一种基于svg与Lottie实现图形自适应的方法及系统 |
CN116051627B (zh) * | 2023-02-02 | 2023-06-13 | 杭州比智科技有限公司 | 一种基于svg与Lottie实现图形自适应的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109241151B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241151A (zh) | 一种数据结构的转换方法、装置及电子设备 | |
CN109634598A (zh) | 一种页面显示方法、装置、设备及存储介质 | |
RU2370808C2 (ru) | Система и способ для отображения данных с вложенными таблицами без схемы | |
CN102193786B (zh) | 一种自适应的图形用户界面构建装置及方法 | |
US8605092B2 (en) | Method and apparatus of animation planning for a dynamic graph | |
CN116597039B (zh) | 图像生成的方法和服务器 | |
Sedlmair et al. | Relex: Visualization for actively changing overlay network specifications | |
CN104135507A (zh) | 一种防盗链的方法和装置 | |
CN105867930B (zh) | 一种函数调用关系的显示方法、装置及终端 | |
CN109582305A (zh) | 用于移动应用页面元素的编码方法、装置及电子设备 | |
CN111142849B (zh) | 流程处理方法、装置、存储介质及处理器 | |
CN113254100A (zh) | 基于Vue的多级路由动态加载的实现方法 | |
CN107562763A (zh) | 数据变化的显示方法及装置 | |
US20170091244A1 (en) | Searching a Data Structure | |
CN104516734B (zh) | 业务流程配置方法及装置 | |
CN110309239A (zh) | 一种可视化地图编辑方法和装置 | |
CN110362298A (zh) | 一种基于浏览器的目标对象绘制方法、装置和浏览器 | |
CN109086326B (zh) | 一种将接口文档转化成数据模型文件的方法及装置 | |
CN111787433A (zh) | 一种光配线网络可视化光路调度方法和系统 | |
CN110532233A (zh) | 一种epub文件生成方法和系统 | |
CN115658056A (zh) | 一种基于图片的前端vue代码自动生成方法和系统 | |
CN105808591A (zh) | 一种流量展示方法及装置 | |
CN114022594A (zh) | 一种斜坡类地理信息要素图形处理方法和装置 | |
CN114238276A (zh) | 一种基于服务编排系统来配置后端接口字段的方法 | |
CN112764749A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |