我已经下载了一个XML数据库(Cellosaurs-https://web.expasy.org/cellosaurus/),我试图使用R中的XML包查找一个细胞系名的所有拼写错误,并返回拼写错误和加入。
我以前从未使用过XML或XPath表达式,而且我遇到了真正的困难,所以我也希望在我的问题中使用正确的术语。
我以如下方式加载了数据库:
doc <- XML::xmlInternalTreeParse(file)我可以看到一个示例条目,如下所示:
<cell-line category="Cancer cell line">
<accession-list>
<accession type="primary">CVCL_6774</accession>
</accession-list>
<name-list>
<name type="identifier">DOV13</name>
</name-list>
<comment-list>
<comment category="Misspelling"> DOR 13; In ArrayExpress E-MTAB-2706, PubMed=25485619 and PubMed=25877200 </comment>
</comment-list>我想我已经找到了所有的拼写错误(这已经有点用处了):
mispelt <- XML::getNodeSet(doc, "//comment[@category=\"Misspelling\"]")但现在我不知道如何获得与每个拼写错误相关的加入。也许我应该使用不同的功能?
有人能帮我解决问题或指点我一个简单的XML包教程吗?
发布于 2022-05-03 18:24:14
一个不完整的例子是很难帮助的。但其基本思想是在树结构上导航,以获取所需的数据。我使用了更最新的xml2包,但对于XML也应该有相同的想法。例如
library(xml2)
xx <- read_xml("cell.xml")
nodes <- xml_find_all(xx, "//comment[@category=\"Misspelling\"]")
xml_find_first(nodes, ".//../../accession-list/accession") |> xml_text()
# [1] "CVCL_6774"目前还不清楚您是否有多个注释,或者您的数据是如何构造的。如果有多个节点,则可能需要在第一个节点之后的第二个节点选择器lapply或purrr::map。
https://stackoverflow.com/questions/72102767
复制相似问题