CN103514291A - 一种文本中树形结构数据的显示方法 - Google Patents
一种文本中树形结构数据的显示方法 Download PDFInfo
- Publication number
- CN103514291A CN103514291A CN201310465063.XA CN201310465063A CN103514291A CN 103514291 A CN103514291 A CN 103514291A CN 201310465063 A CN201310465063 A CN 201310465063A CN 103514291 A CN103514291 A CN 103514291A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- tree structure
- text
- structure data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/34—Browsing; Visualisation therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文本中树形结构数据显示方法,属于数据处理技术领域,包括以下步骤:1)针对文本中数据的特性及附加信息,定义能够记录附加信息及存储树形结构数据的结构体;2)利用所述结构体对数据进行顺序读取,并将数据存储到动态分配的一维数组中;3)构造用于记录父节点与子节点关系的辅助数组;4)定义多叉树结构体,然后将步骤二所述的一维数组中存储的数据利用步骤三构造的辅助数组按照多叉树结构体进行转化;5)将与树形结构数据相关的其他信息与多叉树结构体中的节点关联,实现文本中树形结构数据的显示。本发明节省空间并且读取效率高,简单实用,易于扩展,根据示例可轻松的扩展至多级多叉树。
Description
技术领域
本发明属于文本数据处理技术领域,具体涉及一种文本中树形结构数据的显示方法。
背景技术
在处理文本文件中数据时经常会遇见类似与Item1.Item2、Item1.Item3等类似的数据,特别是在面向对象类的继承关系中。在处理此类数据时,迫切的需要将其转换为树形结构,但由于此类数据数量庞大,单纯的依靠人力手动的进行转换工作量巨大,浪费大量的人力和时间;此类数据还有一个特点是还附带其余辅助信息。在实际处理中可以看到,此类数据的转化经常为数据处理的第一步,之后要考虑后续设计,所以就要求这步转化迅速快捷简单,基于以上原因,迫切的需要一种方法来实现此类数据的转化,同时满足附加信息的显示及后续数据的使用。
发明内容
本发明的目的在于提供一种文本中树形结构数据的显示方法,该方法既能满足树形结构的正确转化,又能满足附加信息的显示以及后续数据的使用。
本发明是通过以下技术方案来实现:
一种文本中树形结构数据的显示方法,包括以下步骤:
步骤一,针对文本中数据的特性及附加信息,定义能够记录附加信息及存储树形结构数据的结构体;
其中,所述的树形结构数据包括父节点数据和子节点数据;
步骤二,利用所述结构体对数据进行顺序读取,并将数据存储到动态分配的一维数组中;其中,所述的数据包括记录的附加信息及存储的树形结构节点数据;
步骤三,构造用于记录父节点与子节点关系的辅助数组;
步骤四,定义多叉树结构体,然后将步骤二所述的一维数组中存储的数据利用步骤三构造的辅助数组按照多叉树结构体进行转化;
步骤五,将与树形结构数据相关的其他信息与多叉树结构体中的节点关联,实现文本中树形结构数据的显示。
步骤一所述的存储树形结构数据是将父节点数据和子节点数据分别存储。
步骤二所述的父节点与子节点关系是指对于每个父节点,记录其子节点下标开始或结束的位置。
所述的多叉树结构体包括以下信息:节点的唯一标示符ID、节点的名称、该节点的父节点的ID、节点的最左边子节点的ID和该节点的右边兄弟节点的ID。
若所述的该节点的父节点ID为其父节点的唯一标示符ID,若该节点没有父节点,则其父节点的ID应该为0。
步骤五是利用MFC树形控件实现树形结构数据相关的其他信息与多叉树结构体中的节点关联。
与现有技术相比,本发明具有以下有益的技术效果:
本发明先定义包含附加信息和树形结构数据的结构体,利用该结构体读取数据,并使用动态分配的一维数组进行数据的存取,节省空间并且读取效率高,动态分配空间能够满足浮动数据量处理的要求,通过辅助数组巧妙的实现了数据的转化,再定义多叉树结构体,将数据形象准确的使用多叉树显示出来,此方法操作简单实用,具有通用性和可扩展性,根据示例可轻松的扩展至多级多叉树,使用数组下标来标记多叉树父子节点之间的关系,在线性时间内完成转化,同时,建立相应的信息结构体,树形结构数据相关的其他信息与多叉树结构体中的节点关联,方便的显示其他信息。
附图说明
图1为本发明的具体实施方式中需要解析的一个文本信息示例图;
图2为本发明的具体实施方式中经过解析后得到树形结构示例图;
图3为本发明的具体实施方式中使用MFC树形控件显示结果图;
图4为树形结构节点示意图。
具体实施方式
下面结合具体的附图及实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
以文本信息中Signals为例,Signals有Signalgroup.Signalname字段,需要将此文本文件(如图1所示)转化为OPCDA Server的地址空间配置文件,而OPCDA Server地址空间为一个典型的多叉树,如图2所示,当点击图2所示的叶子节点时,其余的辅助信息如文本心中Port,Size等需要显示出来,OPCDA Server用此来针对叶子节点采取不同的读写策略。由于上述文本文件中信息较多,只采用具有代表性的辅助信息显示。
本发明的文本中树形结构数据显示方法,包括以下步骤:
1、定义合适的信息结构体
根据文本文件中的信息内容,定义合适的结构体用于记录信息,如图2所示,该结构体命名为SIGNALTXT,包含port、cycle、type、group等。
2、读取文本文件信息至一维数组
本步骤的执行顺序如下:
1)打开文件,从开始遍历文件至末尾,由于每一行为一个信号变量,所以记录行数即可得到信号数目item_cnt;
2)item_cnt为一维数组的大小,动态分配内存空间SIGNALTXT指针signals;
3)按顺序依次将信号内容读入signals一维数组中。
3、构造辅助数组
辅助数组用来记录父子节点之间的关系,那么首先需要确认各级节点的个数。在本示例中,根节点只有一个,二级节点可从端口的不同得出,也可从不同的Signalgroup得到,剩余的全为三级节点,其中根节点为实际需要添加,用于充当所有Signalgroup的父节点,Signalgroup为二级节点,Signalname为三级节点。
辅助节点主要完成的任务是记录Signalgroup中对应的Signalname的结束下标。首先通过遍历得到二级节点的个数port_cnt,然后动态分配辅助数组的大小,然后采用遍历SIGNALTXT一维数组signal中的内容,当Signalgroup为不同时在辅助数组中记录此时的下标。
在分配了内存空间之后,记录第一个二级节点Signalgroup的Signalname起始为1。在循环中,当遇到port不一样时,便把下标加1记录到辅助数组中。最后将辅助数组中最后一个元素记录为Signalname的最后一个下标加1。
4、利用一维数组和辅助数组构造多叉树
首先需要定义多叉树结构体,结构体信息中一般需要包括以下信息:1、节点的唯一标示符ID;2、节点的名称name;3、该节点的父节点的ID;4、节点的最左边子节点的ID;5、该节点的右边兄弟节点的ID。
下来利用一维数组和辅助数组对多叉树节点进行赋值。多叉树节点数目应该为一个根节点、二级节点Signalgroup数目port_cnt与三级节点Signalname数目item_cnt三者之和,记为m_nodeCount。利用m_nodeCount动态分配结构体NODEDEF的内存空间,记为pNode。
首先对根节点进行赋值,根节点的ID为1,没有父节点和右边兄弟节点,所以将对应的ID赋值为0,最左边节点的ID为2.关于节点ID的赋值规律如下:1)根节点的ID为1;2)二级节点ID从2开始,到二级节点Signalgroup数目port_cnt+1结束;3)三级节点的ID从port_cnt+2开始,在port_cnt+item_cnt+1结束;4)节点对应于一维数组的信息,一维数组中下标小的信息其对应的ID小,反之亦然。
根据上面描述的ID赋值规律,可以使用双层循环进行赋值。在外层的循环中是对二级节点赋值,在内层的循环中是对三级节点赋值。当然不要忘记对每级节点没有右兄弟节点的节点dwRightSiblingID赋值为0。
5、利用MFC树形控件显示多叉树
参见图3,利用树形控件将与树形结构数据相关的其他信息与多叉树结构中的节点关联,实现文本中树形结构数据显示,并显示其他信息,如ID、数据类型、Signalname、Signalgroup等。
节点是树形结构数据中的基本单位,树形结构是由节点与节点之间联系起来形成的。如图4中:节点a、节点b、节点c、节点d组成树形结构。节点a为节点b、节点c、及节点d的父节点,节点a的ID为1,节点b的ID为2,节点c的ID为3,节点d的ID为4.
对于每个节点都有一个多叉树结构体进行描述,对于节点a而言,其节点的唯一标示符ID为1;节点的名称为“a”;该节点没有父节点故父节点ID为0;最左边子节点的ID为2(即节点b的ID);右边兄弟节点也没有,故右边兄弟节点的ID为0.
对于节点b而言,其节点的唯一标示符ID为2;节点的名称为“b”;该节点的父节点为1(即节点a的ID);最左边子节点没有,故最左边子节点的ID为0;右边兄弟节点的ID为3(即节点c的ID).
一个节点的唯一ID不能为0,只能为正整数。若描述节点信息的多叉树结构体中某项节点的ID为0,则代表此项没有。若有的话,则应该为对应节点的ID。
在MFC树形控件中,当点击某个节点时,其他信息会显示出来。为此需要建立ItemInfo结构体,用于记录信息和MFC树形控件所特有的全局唯一的handle,此handle可在点击树形控件时用于辨别那个Item被选中。
综上所述,本发明首先动态分配一维数组,将数据读取到一维数组中;然后定义多叉树结构,并构建用于记录多叉树每层节点在一维数组中的起始和结束位置的辅助数组,最后再利用辅助数据,将一维数组中的数据转存到多叉树节点中,并构建多叉树,得到树形结构。本发明所公开的一种文本中树形结构数据的显示方法具有以下优点及效果:
1.使用一维数组进行数据的存取,节省空间并且读取效率高;动态分配空间能够满足浮动数据量处理的要求;
2.通过辅助数组巧妙的实现了数据的转化,将数据形象准确的使用多叉树显示出来,并通过MFC树形控件方便的显示其他信息;
3.此方法简单使用,易于扩展,根据示例可轻松的扩展至多级多叉树。使用数组下标来标记多叉树父子节点之间的关系,在线性时间内完成转化。
本发明针对文本数据结构定义结构体,动态分配一维数组大小,动态分配的优点在于可以根据实际情况分配内存空间,在不需要时可以进行清除,从而节省空间,按顺序将数据内容读入到一维数组中;还定义额外的辅助变量,利用本算法转存至多叉树结构体中,其次,还使用MFC树形控件,本发明方法易于实现,并具有良好的扩展性,方便将数据中其他信息显示。
Claims (6)
1.一种文本中树形结构数据的显示方法,其特征在于,包括以下步骤:
步骤一,针对文本中数据的特性及附加信息,定义能够记录附加信息及存储树形结构数据的结构体;
其中,所述的树形结构数据包括父节点数据和子节点数据;
步骤二,利用所述结构体对数据进行顺序读取,并将数据存储到动态分配的一维数组中;其中,所述的数据包括记录的附加信息及存储的树形结构节点数据;
步骤三,构造用于记录父节点与子节点关系的辅助数组;
步骤四,定义多叉树结构体,然后将步骤二所述的一维数组中存储的数据利用步骤三构造的辅助数组按照多叉树结构体进行转化;
步骤五,将与树形结构数据相关的其他信息与多叉树结构体中的节点关联,实现文本中树形结构数据的显示。
2.根据权利要求1所述的一种文本中树形结构数据的显示方法,其特征在于,步骤一所述的存储树形结构数据是将父节点数据和子节点数据分别存储。
3.根据权利要求1所述的一种文本中树形结构数据的显示方法,其特征在于,步骤二所述的父节点与子节点关系是指对于每个父节点,记录其子节点下标开始或结束的位置。
4.根据权利要求1所述的一种文本中树形结构数据的显示方法,其特征在于,所述的多叉树结构体包括以下信息:节点的唯一标示符ID、节点的名称、该节点的父节点的ID、节点的最左边子节点的ID和该节点的右边兄弟节点的ID。
5.根据权利要求4所述的一种文本中树形结构数据的显示方法,其特征在于,若所述的该节点的父节点ID为其父节点的唯一标示符ID,若该节点没有父节点,则其父节点的ID应该为0。
6.根据权利要求1所述的一种文本中树形结构数据的显示方法,其特征在于,步骤五是利用MFC树形控件实现树形结构数据相关的其他信息与多叉树结构体中的节点关联。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310465063.XA CN103514291B (zh) | 2013-09-29 | 2013-09-29 | 一种文本中树形结构数据的显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310465063.XA CN103514291B (zh) | 2013-09-29 | 2013-09-29 | 一种文本中树形结构数据的显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103514291A true CN103514291A (zh) | 2014-01-15 |
CN103514291B CN103514291B (zh) | 2017-02-08 |
Family
ID=49897015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310465063.XA Expired - Fee Related CN103514291B (zh) | 2013-09-29 | 2013-09-29 | 一种文本中树形结构数据的显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514291B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279177A (zh) * | 2014-07-03 | 2016-01-27 | 北京联嘉众赢网络技术有限公司 | 一种数据结构转换方法及装置 |
CN105654540A (zh) * | 2015-12-28 | 2016-06-08 | Tcl集团股份有限公司 | 一种3d场景下的数据显示方法和装置 |
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微系统与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件系统的实现方法 |
CN106599218A (zh) * | 2016-12-16 | 2017-04-26 | 北京奇虎科技有限公司 | 一种树形结构的处理方法和装置 |
CN107291857A (zh) * | 2017-06-09 | 2017-10-24 | 杨爱娣 | 一种紧凑的层次型数据结构的图形化表达方法及装置 |
CN108255834A (zh) * | 2016-12-28 | 2018-07-06 | 航天信息股份有限公司 | 一种基于ListView的自定义树形结构数据分级显示的方法及系统 |
CN108874484A (zh) * | 2018-06-06 | 2018-11-23 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111062790A (zh) * | 2019-11-15 | 2020-04-24 | 深圳供电局有限公司 | 一种基于企业内部审计成果的数据分析方法及系统 |
CN111159278A (zh) * | 2019-12-30 | 2020-05-15 | 新浪网技术(中国)有限公司 | 数据展示方法及装置、电子设备和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003288334A (ja) * | 2002-03-28 | 2003-10-10 | Toshiba Corp | 文書処理装置及び文書処理方法 |
US7483893B2 (en) * | 2005-09-26 | 2009-01-27 | Bae Systems, Inc. | System and method for lightweight loading for managing content |
CN102214244A (zh) * | 2011-07-07 | 2011-10-12 | 深圳市万兴软件有限公司 | docx文件信息解析方法及系统 |
CN102456053A (zh) * | 2010-11-02 | 2012-05-16 | 江苏大学 | 一种xml文档到数据库的映射方法 |
-
2013
- 2013-09-29 CN CN201310465063.XA patent/CN103514291B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003288334A (ja) * | 2002-03-28 | 2003-10-10 | Toshiba Corp | 文書処理装置及び文書処理方法 |
US7483893B2 (en) * | 2005-09-26 | 2009-01-27 | Bae Systems, Inc. | System and method for lightweight loading for managing content |
CN102456053A (zh) * | 2010-11-02 | 2012-05-16 | 江苏大学 | 一种xml文档到数据库的映射方法 |
CN102214244A (zh) * | 2011-07-07 | 2011-10-12 | 深圳市万兴软件有限公司 | docx文件信息解析方法及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279177A (zh) * | 2014-07-03 | 2016-01-27 | 北京联嘉众赢网络技术有限公司 | 一种数据结构转换方法及装置 |
CN105654540A (zh) * | 2015-12-28 | 2016-06-08 | Tcl集团股份有限公司 | 一种3d场景下的数据显示方法和装置 |
CN106354890A (zh) * | 2016-11-22 | 2017-01-25 | 中国科学院上海微系统与信息技术研究所 | 一种基于N‑ary树结构的随机访问的文件系统的实现方法 |
CN106354890B (zh) * | 2016-11-22 | 2019-05-21 | 中国科学院上海微系统与信息技术研究所 | 一种基于N-ary树结构的随机访问的文件系统的实现方法 |
CN106599218A (zh) * | 2016-12-16 | 2017-04-26 | 北京奇虎科技有限公司 | 一种树形结构的处理方法和装置 |
CN108255834A (zh) * | 2016-12-28 | 2018-07-06 | 航天信息股份有限公司 | 一种基于ListView的自定义树形结构数据分级显示的方法及系统 |
CN107291857A (zh) * | 2017-06-09 | 2017-10-24 | 杨爱娣 | 一种紧凑的层次型数据结构的图形化表达方法及装置 |
CN108874484A (zh) * | 2018-06-06 | 2018-11-23 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111062790A (zh) * | 2019-11-15 | 2020-04-24 | 深圳供电局有限公司 | 一种基于企业内部审计成果的数据分析方法及系统 |
CN111159278A (zh) * | 2019-12-30 | 2020-05-15 | 新浪网技术(中国)有限公司 | 数据展示方法及装置、电子设备和计算机可读存储介质 |
CN111159278B (zh) * | 2019-12-30 | 2023-07-14 | 新浪技术(中国)有限公司 | 数据展示方法及装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103514291B (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103514291A (zh) | 一种文本中树形结构数据的显示方法 | |
CN103019953B (zh) | 一种元数据的构建系统及其方法 | |
CN110929042B (zh) | 一种基于电力企业的知识图谱构建和查询方法 | |
CN108205577B (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
Karnitis et al. | Migration of relational database to document-oriented database: Structure denormalization and data transformation | |
JP6262874B2 (ja) | データベース実現方法 | |
CN104298690A (zh) | 为关系数据库表建立索引结构并进行查询的方法和装置 | |
CN104915450A (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
CN110472068A (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
CN103902653A (zh) | 一种构建数据仓库表血缘关系图的方法和装置 | |
US10002142B2 (en) | Method and apparatus for generating schema of non-relational database | |
CN105138526A (zh) | 用于为关系型数据库自动生成语义映射的方法和系统 | |
CN105630803B (zh) | 文档型数据库建立索引的方法和装置 | |
CN104573022A (zh) | 一种HBase的数据查询方法及装置 | |
CN102760165B (zh) | 一种使用位图索引的全文检索方法和装置 | |
CN103488727B (zh) | 基于周期对数的二维时序数据存储和查询方法 | |
CN106611044A (zh) | 一种sql优化方法及设备 | |
CN103002061A (zh) | 一种长域名与短域名互相转化的方法及装置 | |
CN105912665B (zh) | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 | |
CN104021123A (zh) | 用于数据迁移的方法和系统 | |
CN103020262A (zh) | 一种数据存储方法、系统及数据存储设备 | |
CN104537129A (zh) | 一种基于Web的数据库虚拟存储处理方法 | |
CN109213445A (zh) | 一种存储系统元数据的管理方法、管理系统及相关装置 | |
CN104424219A (zh) | 一种数据文件的管理方法及装置 | |
CN103473444A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170208 Termination date: 20190929 |