如何用定界符分隔 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 将所有作者姓名与每个作者姓名之间的逗号分隔符组合在一起,但组合了姓氏和名字。我也可以对这些进行上述相同的字符串操作,但仍然 运行 遇到与上述相同的问题。
如果我将作者姓名分成多行,这会为每篇文章创建多行,我不确定如何从中获得每篇文章的最终目标。
最终目标:
如果能与作者一起解决这个问题,我们将不胜感激!
理想情况下,您应该分多个步骤执行此操作。我会这样做:
- 使用XPath节点
- 提取所有
contrib
元素和return结果“节点”作为行(不是作为字符串)
- 使用另一个 XPath 节点提取
surname
、given-names
和 xref
- 将它们连接在一起,例如使用 String Manipulation 节点
- 将所有内容组合成一个字符串,例如使用 Column Combiner or the GroupBy 节点
[edit] 您可以在我的 public NodePit space 上找到完整的示例工作流:
[关于您的编辑] 据我所知,您现在面临的挑战是,您的 table 包含的内容不止 一个 publication,并且GroupBy 节点会将它们全部组合成一行。为避免这种情况,您可以使用“循环”节点。简单地用一对 Chunk Loop Start and a Loop End 节点围绕我上面描述的逻辑。这允许您“孤立地”处理每个 public。
我有许多科学出版物的 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 将所有作者姓名与每个作者姓名之间的逗号分隔符组合在一起,但组合了姓氏和名字。我也可以对这些进行上述相同的字符串操作,但仍然 运行 遇到与上述相同的问题。
如果我将作者姓名分成多行,这会为每篇文章创建多行,我不确定如何从中获得每篇文章的最终目标。
最终目标:
如果能与作者一起解决这个问题,我们将不胜感激!
理想情况下,您应该分多个步骤执行此操作。我会这样做:
- 使用XPath节点
- 提取所有
contrib
元素和return结果“节点”作为行(不是作为字符串) - 使用另一个 XPath 节点提取
surname
、given-names
和xref
- 将它们连接在一起,例如使用 String Manipulation 节点
- 将所有内容组合成一个字符串,例如使用 Column Combiner or the GroupBy 节点
[edit] 您可以在我的 public NodePit space 上找到完整的示例工作流:
[关于您的编辑] 据我所知,您现在面临的挑战是,您的 table 包含的内容不止 一个 publication,并且GroupBy 节点会将它们全部组合成一行。为避免这种情况,您可以使用“循环”节点。简单地用一对 Chunk Loop Start and a Loop End 节点围绕我上面描述的逻辑。这允许您“孤立地”处理每个 public。