我是一个爱好 Xojo 用户。我想将 Gedcom 文件导入我的程序,尤其是 SQLite 数据库。
数据库的结构
表
人
- ID: Integer
- Gender: Varchar // M, F or U
- Surname: Varchar
- Givenname: Varchar
关系
- ID: Integer
- Husband: Integer
- Wife: Integer
孩子们
- ID: Integer
- PersonID: Integer
- FamilyID: Integer
- Order: Integer
人物事件
- ID: Integer
- PersonID: Integer
- EventType: Varchar // e.g. BIRT, DEAT, BURI, CHR
- Date: Varchar
- Description: Varchar
- Order: Integer
关系事件
- ID: Integer
- RelationshipID: Integer
- EventType: Varchar // e.g. MARR, DIV, DIVF
- Date: Varchar
- Description: Integer
- Order: Integer
我写了一个工作 Gedcom-Line-Parser。他将单个 Gedcomline 拆分为:
- Level As Integer
- Reference As String // optional
- Tag As String
- Value As String // optional
我通过 TextInputStream 加载 Gedcom-File(工作正常)。不,我需要解析每一行。
Gedcom-个人样本
0 @I1@ INDI
1 NAME George /Clooney/
2 GIVN George
2 SURN Clooney
1 BIRT
2 DATE 6 MAY 1961
2 PLAC Lexington, Fayette County, Kentucky, USA
你会看到,Level-Numbers 向我们展示了一个“Tree-Structure”。所以我认为将文件解析为分离的对象(PersonObj、RelationshipObj、EventObj 等)到 JSONItem 是最好和最简单的方法,因为它很容易获得节点的子节点。稍后,我可以简单地读取节点、子节点来创建数据库条目。但我不知道如何创建这样的算法。
任何人都可以帮助我吗?