R 将多个xml文件导入并转换为DF

R 将多个xml文件导入并转换为DF,r,xml,R,Xml,我试图创建一个例程,用于从给定目录导入大量xml文件。可能我必须一次导入一千多个xml文件,并将它们转换为数据帧。我已经从单个文件创建了导入例程: require(tidyverse) require(xml2) setwd("D:/") page<- read_xml("base.xml") ns<- page %>% xml_find_all(".//test:billing") billing<-xml2::as_list(ns) %>% jsonlite::

我试图创建一个例程,用于从给定目录导入大量xml文件。可能我必须一次导入一千多个xml文件,并将它们转换为数据帧。我已经从单个文件创建了导入例程:

require(tidyverse)
require(xml2)
setwd("D:/")
page<- read_xml("base.xml")
ns<- page %>% xml_find_all(".//test:billing")
billing<-xml2::as_list(ns) %>% jsonlite::toJSON() %>% jsonlite::fromJSON()
目录中应导入的所有我的文件的示例D:/:

20215_ABFF20.xml
35700_38HY9R.xml
38597_40YY9J.xml
99853_99PP1Z.xml
115341_663QQP.xml
我尝试的第一步是识别目录“D:/”中的所有文件,我这样做:

require(tidyverse)
require(xml2)
setwd("D:/")
files <- list.files(pattern = ".xml$")

如何一次性将所有xml文件导入并转换为数据帧?假设文件具有相同的结构。

只需将一个XML的过程概括为一个用户定义的方法,然后使用lappy构建一个数据帧列表,最后将所有数据帧堆叠在一起

# USER-DEFINED METHOD
proc_xml <- function(xml_file) {
  page <- read_xml(xml_file)
  ns <- xml_find_all(page, ".//test:billing")
  billing <- jsonlite::fromJSON(jsonlite::toJSON(xml2::as_list(ns)))

  return(billing)
}

# BUILD LIST OF BILLING DATA FRAMES
files <- list.files(pattern = ".xml")
df_list <- lapply(files, proc_xml)

# CONCATENATE INTO ONE MASTER DATA FRAME
final_df <- dplyr::bind_rows(df_list)

发生错误:错误:参数1不能是包含数据帧的列表
# USER-DEFINED METHOD
proc_xml <- function(xml_file) {
  page <- read_xml(xml_file)
  ns <- xml_find_all(page, ".//test:billing")
  billing <- jsonlite::fromJSON(jsonlite::toJSON(xml2::as_list(ns)))

  return(billing)
}

# BUILD LIST OF BILLING DATA FRAMES
files <- list.files(pattern = ".xml")
df_list <- lapply(files, proc_xml)

# CONCATENATE INTO ONE MASTER DATA FRAME
final_df <- dplyr::bind_rows(df_list)