首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本的XML包问题--如何返回匹配条目的其他属性?

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

Stack Overflow用户
提问于 2022-05-03 16:45:35
回答 1查看 13关注 0票数 0

我已经下载了一个XML数据库(Cellosaurs-https://web.expasy.org/cellosaurus/),我试图使用R中的XML包查找一个细胞系名的所有拼写错误,并返回拼写错误和加入。

我以前从未使用过XML或XPath表达式,而且我遇到了真正的困难,所以我也希望在我的问题中使用正确的术语。

我以如下方式加载了数据库:

代码语言:javascript
复制
doc <- XML::xmlInternalTreeParse(file)

我可以看到一个示例条目,如下所示:

代码语言:javascript
复制
<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>

我想我已经找到了所有的拼写错误(这已经有点用处了):

代码语言:javascript
复制
mispelt <- XML::getNodeSet(doc, "//comment[@category=\"Misspelling\"]")

但现在我不知道如何获得与每个拼写错误相关的加入。也许我应该使用不同的功能?

有人能帮我解决问题或指点我一个简单的XML包教程吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-03 18:24:14

一个不完整的例子是很难帮助的。但其基本思想是在树结构上导航,以获取所需的数据。我使用了更最新的xml2包,但对于XML也应该有相同的想法。例如

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72102767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档