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

How to find the xpath associated with a given attribute name in R's xml2 package

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

我知道我可以在 xml 文档中搜索给定的节点名称和 return 关联的 xpath。例如,在下面的代码中,我正在搜索节点名称 'CHILD_NODE' 和 returning 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?例如。在上面的示例中,我想在 xpath (/PARENT_NODE/CHILD_NODE)?

中搜索属性“attr_name”和 return

正确的 xpath 是

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

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