基本XML R包问题-如何返回匹配条目的其他属性?



我下载了一个XML数据库(Cellosaurus - 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 R包教程请?

对于一个不完整的示例很难提供帮助。但其基本思想是在树状结构中导航以获得所需的数据。我已经使用了当前的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"

不清楚你是否有多个注释或者你的数据是如何结构化的。如果有多个节点,则可能需要lapplypurrr::map作为第一个节点选择器之后的第二个节点选择器

最新更新