如何在 R 的 xml2 包中找到与给定属性名称关联的 xpath

问题描述

我正在使用 R 的 xml2 包来操作 xml 文件。我知道一个属性名称并想找到它的 xpath。

我知道我可以在 xml 文档中搜索给定的节点名称并返回关联的 xpath。例如,在下面的代码中,我正在搜索节点名称“CHILD_NODE”并返回 xpath。

n consecutive buckets

如果我改为指定属性名称,如何找到 xpath?例如。在上面的示例中,我想搜索属性library(xml2) library(dplyr) # Make example data dat <- read_xml( "<PARENT_NODE> <CHILD_NODE attr_name='a'> </CHILD_NODE> </PARENT_NODE>" ) # Find xpath to CHILD_NODE: xpath = dat %>% xml_find_all('//CHILD_NODE') %>% xml_path() # "/PARENT_NODE/CHILD_NODE" ”并返回 xpath attr_name?

解决方法

正确的 xpath 是

dat %>% 
  xml_find_all('//*[@attr_name]') %>% 
  xml_path()

* 搜索所有节点,@ 允许您指定要优化的属性。