You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用rentrez提取PubMed摘要?解决XML解析报错问题

解决PubMed XML记录提取摘要的问题

报错原因

当你调用entrez_fetch时设置了parsed = TRUE,返回的record已经是XML外部指针对象(externalptr),不需要再用xmlParse()重复解析,这就是触发错误的直接原因。

正确提取摘要的两种方案

方案1:基于已解析的XML对象直接操作(推荐)

利用XML包的XPath查询定位标签,直接提取文本:

library(rentrez)
library(XML)

# 获取已解析的PubMed XML记录
record <- entrez_fetch(db = "pubmed", id = 37757828, rettype = "xml", parsed = TRUE)

# 定位所有<AbstractText>标签并提取文本内容
abstract_segments <- xpathSApply(record, "//AbstractText", xmlValue)
# 合并多段摘要为完整文本(部分文献摘要分多个段落)
full_abstract <- paste(abstract_segments, collapse = " ")

# 输出结果
print(full_abstract)

方案2:使用rentrez内置工具简化操作

rentrez自带的extract_from_xml()函数可以更简洁地完成提取:

library(rentrez)

record <- entrez_fetch(db = "pubmed", id = 37757828, rettype = "xml", parsed = TRUE)

# 直接提取<AbstractText>的文本内容
abstract_segments <- extract_from_xml(record, "//AbstractText", "text")
full_abstract <- paste(abstract_segments, collapse = " ")

print(full_abstract)

备选方案:先获取原始XML字符串再解析

如果坚持要用xmlParse(),可以在获取记录时关闭自动解析,先拿到原始XML字符串:

library(rentrez)
library(XML)

# 获取未解析的原始XML字符串
record_raw <- entrez_fetch(db = "pubmed", id = 37757828, rettype = "xml", parsed = FALSE)
# 解析字符串为XML对象
record_xml <- xmlParse(record_raw)
# 提取摘要文本
abstract_segments <- xpathSApply(record_xml, "//AbstractText", xmlValue)
full_abstract <- paste(abstract_segments, collapse = " ")

print(full_abstract)

内容的提问来源于stack exchange,提问作者Lisa W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:53:29