如何用定界符分隔 XPath 结果?

How to separate XPath results by a delimiter?

我有许多科学出版物的 XML 数据,我正在尝试解析 KNIME 中的数据以提取我需要的字段。这是一个示例:https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pmc&id=PMC4400176

为了提取作者姓名,我使用了以下 XPath 查询:/pmc-articleset/article/front/article-meta/contrib-group/contrib[@contrib-type="author"]

但是,这个 returns: BorisovaSvetlana A., KimHak Joong, PuXiaotao, LiuHung-wen*

我希望姓氏和名字用一些定界符分隔,comma/space,不同的作者姓名用分号分隔。这可能吗?或者有没有比我目前正在做的更好的方法来提取信息,这将使我能够实现我的理想输出:

Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*

[编辑]

当前的 KNIME 工作流程:

当前输出示例:

我试过将所有出版物的所有作者姓名输出到一个集合单元中。 (如果我将所有名称输出到多个列中,这最终会创建数百个包含缺失值的列。我什至尝试使用多个字符串操作来实现我的理想输出,但它仍然不是完美的,由于一些author names having multiple names, hyphenated names, or names containing special characters.) collection cell 将所有作者姓名与每个作者姓名之间的逗号分隔符组合在一起,但组合了姓氏和名字。我也可以对这些进行上述相同的字符串操作,但仍然 运行 遇到与上述相同的问题。

如果我将作者姓名分成多行,这会为每篇文章创建多行,我不确定如何从中获得每篇文章的最终目标。

最终目标:

如果能与作者一起解决这个问题,我们将不胜感激!

理想情况下,您应该分多个步骤执行此操作。我会这样做:

  1. 使用XPath节点
  2. 提取所有contrib元素和return结果“节点”作为行(不是作为字符串)
  3. 使用另一个 XPath 节点提取 surnamegiven-namesxref
  4. 将它们连接在一起,例如使用 String Manipulation 节点
  5. 将所有内容组合成一个字符串,例如使用 Column Combiner or the GroupBy 节点

[edit] 您可以在我的 public NodePit space 上找到完整的示例工作流:

https://nodepit.com/workflow/com.nodepit.space%2Fqqilihq%2Fpublic%2FStack_Overflow%2FStack_Overflow_how-to-separate-xpath-results-by-a-delimiter_55959662.knwf

[关于您的编辑] 据我所知,您现在面临的挑战是,您的 table 包含的内容不止 一个 publication,并且GroupBy 节点会将它们全部组合成一行。为避免这种情况,您可以使用“循环”节点。简单地用一对 Chunk Loop Start and a Loop End 节点围绕我上面描述的逻辑。这允许您“孤立地”处理每个 public。