【问题标题】:converting simple xml node into R dataframe get empty values将简单的 xml 节点转换为 R 数据框获取空值
【发布时间】:2020-11-18 17:05:54
【问题描述】:

有一个非常简单的 xml 我想导出到 R 中的数据框。

<root>
 <source>
  <sourceId value="8556"/>
 </source>
<content>
  <DESCRIPTION value="0"/>
  <SORTED value="290"/>
  <ANNULATION value="34"/>
  <RECORDING value="5665"/>
  <TOLOCK value=""/>
  <FUTURE value="categorical"/>
 </content>
</root>

我以这种方式检索我需要的节点:

library(XML)
xmlDoc <- xmlParse("path-to-file", useInternalNode=TRUE)
df <- xmlToDataFrame(getNodeSet(xmlDoc,"//content"))

但是数据框只有没有任何价值的列。所以我想我在某些方面是错误的。

> df


 DESCRIPTION SORTED ANNULATION RECORDING TOLOCK FUTURE
1                                                      
> str(df)
'data.frame':   1 obs. of  6 variables:
 $ DESCRIPTION: chr ""
 $ SORTED     : chr ""
 $ ANNULATION : chr ""
 $ RECORDING  : chr ""
 $ TOLOCK     : chr ""
 $ FUTURE     : chr ""

【问题讨论】:

    标签: r xml dataframe


    【解决方案1】:

    通常,xml 处理非常依赖文件。所以你必须与它斗争,因为没有灵丹妙药。

    在您的情况下,假设您希望它在一行中,只需从标签中迭代名称和值(我必须说不是很漂亮):

    doc <- read_xml("my.xml")
    
    content <- xml_find_first(doc,".//content")
    
    values <- xml_children(content) %>% xml_attr("value")
    
    names <- xml_name(xml_children(content))
    
    df <- data.frame(mstrix(ncol = length(names), nrow = 0))
    
    df <- rbind(df, values)
    
    colnames(df) <- names
    

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多