1

在 OpenRefine 的模板导出功能中使用 forNonBlank 时出现错误。

我有多个主题的单元格,我想在单独的 dcterms:subject xml 元素中捕获这些主题。例子: Geology--Alberta--Coal Valley. // Geology, Structural. // Geology, Stratigraphic--Cretaceous.

我正在使用 OpenRefine 的模板导出选项导出到 XML,类似于此处描述的过程。

这个表达式工作正常:

{{forEach(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n")}}

我得到:

<dcterms:subject>Geology--Alberta--Coal Valley.</dcterms:subject> <dcterms:subject>Geology, Structural.</dcterms:subject> <dcterms:subject>Geology, Stratigraphic--Cretaceous.</dcterms:subject>

但是当使用 forNonBlank 时:

{{forNonBlank(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n", "")}}

我得到:

<dcterms:subject>[Ljava.lang.String;@16657412</dcterms:subject>

我的编码有问题,还是这是一个错误?

谢谢你的帮助。

4

1 回答 1

1

forNonBlank 不是迭代函数,所以函数:

forNonBlank(cells["dcterms:subject"].value.split(" // "), v, "" + v + "\n", "")

评估通过拆分创建的数组是否为空白(整个数组,而不是数组中的每个项目)并发现它不为空白将数组分配给变量“v”。

本质上,'forNonBlank' 的作用类似于结合 'if' 和 'isNonBlank',而不是 'forEach' 和 'isNonBlank'

你有几个选项可以做你想做的事,但你需要在某个地方有一个迭代器。例如:

forEach(cells["dcterms:subject"].value.split(" // "),v,forNonBlank(v,w, "" + w + "", "")).join("/n")

于 2015-09-28T08:37:56.937 回答