将XML文件转换为DATA



你知道用r把xml文件转换成数据帧格式的最好方法是什么吗?它可以是任何格式的table, data.table…

xml文件在这个链接下面

https://www.ictax.admin.ch/extern/api/download/2619327/ea428026a27f772d57efbbcdc56bff62/kursliste_2022.zip

我尝试了下面的代码,但它不起作用:

result <- xmlParse(file = "kursliste_2022.xml")
xml_result <- xmlToList(result)
xml_structure(xml_result)

试试这个:

library(tibble)
library(XML)
library(xml2)
ur_xml <- "your_xml_path"
data <- read_xml(ur_xml)
doc <- xmlParse(data)
df <- xmlToDataFrame(nodes = getNodeSet(doc, "//your_node_of_interest"))
tb <- as_tibble(df)

数据帧和XML文档没有唯一的1对1映射。数据帧是类似矩阵的结构,因此只有两个维度,而XML文档更类似于一个n维数组。
事实证明,你问的问题有多种方式,因此你的问题是基于意见的,这在这里通常是不允许的。

但是,为了让您了解如何减少维度,您可以在数据框架的一列上重复相同的值例如,对于前三个节点:

library('xml2')
result <- read_xml("kursliste_2022.xml")
y <- lapply(1:3, (i) xml_child(result, i))
Reduce(rbind, lapply(y, (x) cbind(data.frame(t(xml_attrs(x))), t(sapply(xml_children(x), xml_attrs)))))
#      id canton lang                   name
# 1  2587     AG   de                 Aargau
# 2  2587     AG   en                 Aargau
# 3  2587     AG   fr                Argovie
# 4  2587     AG   it                Argovia
# 5  2588     AI   de       Appenzell I. Rh.
# 6  2588     AI   en Appenzell Inner-Rhodes
# 7  2588     AI   fr     Appenzell Rh.-Int.
# 8  2588     AI   it     Appenzello Interno
# 9  2589     AR   de       Appenzell A. Rh.
# 10 2589     AR   en Appenzell Outer-Rhodes
# 11 2589     AR   fr     Appenzell Rh.-Ext.
# 12 2589     AR   it     Appenzello Esterno

现在,请编辑你的问题,使你的问题更清楚。

相关内容

  • 没有找到相关文章

最新更新