问题标签 [gedcom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
94 浏览

ruby-on-rails - Rails gedcom gem,如果我加载 gedcom 文件,我会得到“堆栈级别太深”异常

我正在使用 Ruby on Rails 开发家谱分析器。为了解析 gedcom 文件,我安装了这个 gem:https ://github.com/rbur004/gedcom

文档有点零星。在rails控制台中,我输入了

它应该在 g 中加载文件(文件在项目根目录中,所以路径应该没问题)。但我收到以下错误:

文件本身应该没问题,我可以毫无问题地将其上传到 myheritage.com。

0 投票
1 回答
130 浏览

ruby - ruby gedcom 解析器 EOF 异常

我需要为分析项目解析 gedcom 5.5 文件。我发现的第一个 ruby​​ 解析器会导致堆栈级别太深的错误,所以我试图找到替代方案。我找到了这个项目:https ://github.com/jslade/gedcom-ruby

包括一些样本,但我也没有让它们工作。

这是解析器本身:https ://github.com/jslade/gedcom-ruby/blob/master/lib/gedcom.rb

如果我尝试这样的示例:

我收到以下错误:

为了更好地理解,我在每种方法中都写了一个“gets”,这是异常引发之前的输出:

导致问题的确切线路是

在 detect_rs 方法中:

我希望有人可以帮助我。

0 投票
2 回答
770 浏览

java - 读取 GEDCOM 文件:如何将相应的出生日期、月份和年份子字符串转换为从输入文件到输出文件的整数变量

我有一个包含大量个人/家庭记录的输入 GEDCOM 文件。目的是将他们的数据格式化成这种形式:

名称(p6,“哈利·布伊斯”)。出生(p6,日期(1927,11,17))。死亡(p6,日期(2001,08,21))。famc(p6,f3)。家族(p6,f2)。

我已经能够提取人员编号和他们的姓名并将其打印到输出文件中,但是我无法解析出生/死亡日期。我希望能够使用子字符串将birthDay、birthMonth 和BirthYear 分配为整数,以便将其打印到输出文件中。它必须是整数,所以我可以按日期排序。这是来自输入文件的一个客户数据的示例。

这是我到目前为止的源代码:

}

如果没有 if 语句(包含“BIRT”),并且 outFile.write() 方法中没有“birthDay”,我的输出如下所示:

这是一个好的开始。

但是当我有那个 if 语句时,我得到一个这样的错误,并且没有打印:

现在,我已经尝试了子字符串索引值的每种组合,但似乎没有任何效果。关于我如何解决这个问题的任何想法?

提前致谢。

0 投票
1 回答
922 浏览

algorithm - 将 Gedcom 解析为 SQLite 数据库

我是一个爱好 Xojo 用户。我想将 Gedcom 文件导入我的程序,尤其是 SQLite 数据库。

数据库的结构

关系

孩子们

人物事件

关系事件


我写了一个工作 Gedcom-Line-Parser。他将单个 Gedcomline 拆分为:

我通过 TextInputStream 加载 Gedcom-File(工作正常)。不,我需要解析每一行。

Gedcom-个人样本

你会看到,Level-Numbers 向我们展示了一个“Tree-Structure”。所以我认为将文件解析为分离的对象(PersonObj、RelationshipObj、EventObj 等)到 JSONItem 是最好和最简单的方法,因为它很容易获得节点的子节点。稍后,我可以简单地读取节点、子节点来创建数据库条目。但我不知道如何创建这样的算法。

任何人都可以帮助我吗?

0 投票
3 回答
407 浏览

php - 如何创建基于 Drupal 的家谱应用程序?

我想使用 Drupal 来构建一个家谱应用程序。我看到,困难在于允许用户上传 gedcom 文件并对其进行解析,然后从该数据中创建各种 Drupal 节点。Drupal 中的节点是内容项。因此,我将个人和家庭作为内容类型,并且每个都有各种事件作为来自 gedcom 文件的字段。

gedcom 文件是家谱信息的通用格式。不同的桌面应用程序获取数据并将其转换为专有格式。我不确定如何完成的是给最终用户一个表单来上传他们的 gedcom 文件,然后让它使用 Drupal 创建节点,也就是内容项。我可以找到使用 python、perl 或其他语言解析 gedcom 文件的开源代码。因此,我可以使用其中一个库从 gedcom 文件输出中创建 JSON、XML、CSV 等。

Drupal 是用 PHP 编写的,挑战的另一个细节是,对于最终用户,我不想让他/她找到在第一步中创建的文件(其中第一步是 gedcom 文件的解析和转换)并将其上传到 Drupal。就最终用户所见,我想以某种方式使这一步发生。不知何故,我需要一种方法来触发 Drupal 在将数据转换为 JSON、XML 或 CSV 后导入数据。

0 投票
1 回答
27 浏览

c++ - 使用 C++ 检查外部文件对一组函数和打印错误以及行号

我有一个 GEDCOM 文件,我提供给我的程序,我的程序根据一组函数检查 GEDCOM 文件的内容。

如果文件内容不符合功能要求,则应在 GEDCOM 文件中存在错误的行号连同行号一起抛出错误。

我还想提一下,我曾尝试使用LINEFILE等宏,但它们正在打印源代码的内容,如源代码行和源代码的文件名。

提前致谢

0 投票
1 回答
305 浏览

javascript - 导入/导出 GEDCOM 文件

作为项目的一部分,我必须包括要从数据库中插入/取出的 GEDCOM 文件的导入和导出。我发现很难找到如何编写文件,因为实际上没有任何关于它们如何工作的教程。有人对我能做什么有任何建议吗?我的项目是创建一个 Web 应用程序来绘制家谱,因此我将使用 javascript 和 PHP 进行编码。或者,如果有人知道任何其他有用的软件?谢谢你。

0 投票
1 回答
15597 浏览

regex - 行尾的正则表达式

我正在尝试使用正则表达式解析GEDCOM文件,并且快到了,但表达式会抓取文本的下一行,以获取行尾有可选文本的行。每条记录应该是一行。

这是文件的摘录:

这是我正在使用的正则表达式:

这适用于所有行,除了末尾不包含任何文本的行,例如第一行。例如,第一条记录的最后一个捕获组包含“1 CHAR UTF-8”。

这是来自 regex101.com 的屏幕截图,显示了紫色捕获组如何渗入下一行:

正则表达式 101 屏幕截图

我尝试使用$限定符将其限制.*为仅行尾,但这失败了,因为第二行也是行尾。

0 投票
5 回答
118 浏览

regex - 正则表达式提取以“/”为界的文本

我需要一个正则表达式来从 GEDCOM 文件中提取名称。格式为:

弗雷德约瑟夫/史密斯/

以 / 为界的文本是姓氏,Fred Joseph 是名字。复杂之处在于姓氏可能在文本中的任何位置,也可能根本不存在。我需要一些可以提取姓氏并将其他所有内容作为名字的东西。

据我所知,我已经尝试使用 ? 预选赛但无济于事:

到目前为止我所拥有的

如您所见,它有几个问题:如果姓氏丢失,则不会捕获任何内容,名字有时会有前导和尾随空格,当我真的想要 2 个时,我有 3 个捕获组。如果姓氏的捕获组不包含“/”字符。

任何帮助将非常感激。

0 投票
1 回答
871 浏览

regex - 如何使用 Flex 处理不同的换行符约定

我们正在尝试解析 GEDCOM 文件格式。根据其标准,CR 和 LF 的所有组合都可以有效地表示换行符。

这是一种基于行的格式,所以当我们已经匹配了数字和标签时,我们经常想要匹配行的其余部分。一个规则的例子是

换行符由

这在 Windows 上运行良好,因为它在你背后将 \r\n 转换为 \n,但在 Linux 上却不行。在那里,\r 可以通过点匹配。因为 Flex 使用最长匹配规则,它要么在数据中包含 \r,要么将已知标记匹配到 UNKNOWNTAG 规则,因为这种技术上正确的匹配将长一个字节

一个解决方案可能是用 [^\r\n] 替换所有点,但这似乎不优雅。有没有更好的办法?