如何使用 R 的 xml2 包获取 XML 文件中所有属性的名称
How to get the names of all attributes in an XML file using R's xml2 package
我正在尝试使用 R 的 xml2 包获取 XML 文件中所有属性的名称。
我可以使用 xml_attrs()
函数获取单个级别的属性名称,但无法弄清楚如何获取所有级别的属性。请参阅下面的示例。
非常感谢任何帮助。
library(xml2)
library(dplyr)
# Make up some data
dat <- read_xml(
"<LEVEL1 attr_lvl1='a'>
<LEVEL2 attr_lvl2='b'>
</LEVEL2>
<LEVEL2 attr_lvl2='c'>
</LEVEL2>
</LEVEL1>"
)
# I know how to get the attributes for each level...
names(xml_attrs(dat)) #"attr_lvl1"
names(xml_attrs(xml_child(dat, 'LEVEL2'))) #"attr_lvl2"
# Want code which returns the names of attributes across
# *all* levels, i.e. should return "attr_lvl1", "attr_lvl2"
您可以遍历所有节点,获取属性名称,然后创建唯一值向量。你可以用
dat %>%
xml_find_all("//*") %>%
purrr::map(~names(xml_attrs(.))) %>%
unlist() %>%
unique()
# [1] "attr_lvl1" "attr_lvl2"
如果不迭代所有节点,真的没有办法知道所有属性可能是什么(除非您的 XML 有某种您可以查询的模式)。
我正在尝试使用 R 的 xml2 包获取 XML 文件中所有属性的名称。
我可以使用 xml_attrs()
函数获取单个级别的属性名称,但无法弄清楚如何获取所有级别的属性。请参阅下面的示例。
非常感谢任何帮助。
library(xml2)
library(dplyr)
# Make up some data
dat <- read_xml(
"<LEVEL1 attr_lvl1='a'>
<LEVEL2 attr_lvl2='b'>
</LEVEL2>
<LEVEL2 attr_lvl2='c'>
</LEVEL2>
</LEVEL1>"
)
# I know how to get the attributes for each level...
names(xml_attrs(dat)) #"attr_lvl1"
names(xml_attrs(xml_child(dat, 'LEVEL2'))) #"attr_lvl2"
# Want code which returns the names of attributes across
# *all* levels, i.e. should return "attr_lvl1", "attr_lvl2"
您可以遍历所有节点,获取属性名称,然后创建唯一值向量。你可以用
dat %>%
xml_find_all("//*") %>%
purrr::map(~names(xml_attrs(.))) %>%
unlist() %>%
unique()
# [1] "attr_lvl1" "attr_lvl2"
如果不迭代所有节点,真的没有办法知道所有属性可能是什么(除非您的 XML 有某种您可以查询的模式)。