【发布时间】:2018-11-04 04:44:40
【问题描述】:
我在这篇文章 (R dataframe from XML when values are multiple or missing ) 中读到了类似的问题,但 XML 文件的格式与我所拥有的不同。我的 XML 是这样的:
<?xml version="1.0" encoding="utf-8"?>
<users>
<row
Id="-1"
Body="Hello! I am a programmer!"
OwnerUserId="11111"
/>
<\users>
首先,这是正确的 XML 还是不同的类型?
第二,我已经尝试了该帖子中的所有答案,但没有一个适用于这种 XML 格式。
第三,在这种情况下,如果某些行没有例如OwnerUserId,我怎样才能有效地解析这些行?
我已经编写了以下代码来执行此操作,我想知道是否有一种有效且更快的方法来执行此操作,而不是逐行读取?
posts <- xmlParse('path_to_file.xml')
xml_posts <- xmlToList(posts)
df_posts <- as.data.frame(matrix(ncol = 3))
df_posts <- df_posts[-1,]
colnames(df_posts) <- c(
"Id"
, "Text"
, "User_ID"
)
for(i in 1:length(xml_posts)){
user_id <- 'none'
xml_unlisted <- unlist(xml_posts[i])
name <- names(xml_unlisted)
if (length(xml_unlisted[name == "row.OwnerUserId"]) != 0){
user_id <- xml_unlisted[name == "row.OwnerUserId"]
}
df_temp <- data.frame(list(
xml_unlisted[name == "row.Id"]
,xml_unlisted[name == "row.Body"]
,user_id
))
colnames(df_temp) <- c(
"Id"
, "Text"
, "User_ID"
)
df_posts <- rbind(df_posts, df_temp)
}
head(df_posts)
【问题讨论】:
标签: r xml dataframe missing-data