如何通过定界符分隔XPath结果?

Zil*_*lle 3 xml xpath knime

我拥有许多科学出版物的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"]

但是,这返回: BorisovaSvetlana A., KimHak Joong, PuXiaotao, LiuHung-wen*

我希望姓氏和名字之间用分隔符,逗号/空格隔开,而不同的作者姓名之间用分号隔开。这可能吗?还是有比我目前正在做的更好的方法来提取信息,这将使我获得理想的输出结果:

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

[编辑]

当前的KNIME工作流程:

在此处输入图片说明

样品电流输出:

在此处输入图片说明

我尝试将所有出版物的所有作者姓名输出到收集单元中。(如果我将所有名称输出到多列中,那么最终会创建数百个包含缺失值的列。我什至尝试使用多个字符串操作来实现理想的输出,但是由于某些原因,它仍然不够完美作者名称具有多个名称,带连字符的名称或包含特殊字符的名称。)收集单元将所有作者名称与每个作者名称之间的逗号分隔符组合在一起,但将姓氏和给定名称组合在一起。我还可以对它们进行相同的上述字符串操作,但仍然遇到与上述相同的问题。

如果我将作者姓名分成多行,则会为每篇文章创建多行,因此我不确定该如何达到每篇文章的最终目标。

在此处输入图片说明

最终目标:

在此处输入图片说明

任何与作者解决此问题的想法将不胜感激!

qqi*_*ihq 5

理想情况下,您应该分多个步骤进行。我将按照以下步骤进行操作:

  1. 提取所有contrib元素,并使用XPath节点将生成的“节点”作为行(而不是字符串)返回
  2. 提取surnamegiven-namesxref使用另一个XPath节点
  3. 将它们连接在一起,例如使用“ 字符串操纵”节点
  4. 将所有内容组合为单个字符串,例如使用“ 列组合器”或“ GroupBy”节点

[edit]您可以在我的公共NodePit空间上找到一个可以正常工作的示例工作流程:

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

工作流程

[关于你的编辑]据我得到的,你的挑战是,你的表包含多于一个的出版物,和的GroupBy节点将它们全部组合成一排。为避免这种情况,可以使用“循环”节点。只需用一对“ Chunk Loop Start”和“ Loop End”节点围绕上面描述的逻辑即可。这使您可以“独立”处理每个公共帐户。