私はホビー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
RelationshipEvents
- 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
ご覧のとおり、レベル番号は「ツリー構造」を示しています。したがって、ノードの子を簡単に取得できるため、ファイルを個別のオブジェクト (PersonObj、RelationshipObj、EventObj など) に解析して JSONItem にするのが最善かつ最も簡単な方法だと思いました。後で、ノード、子ノードを簡単に読み取ってデータベースエントリを作成できます。しかし、そのようなアルゴリズムを作成する方法がわかりません。
誰か助けてくれませんか?