R使用XML2将数据从XML提取到数据帧中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R使用XML2将数据从XML提取到数据帧中相关的知识,希望对你有一定的参考价值。
我是R的新手。尝试将XML中的数据解析为数据框。
我需要一个带有列的数据框:
MAC,device_Online_status,device_onine_threshold,device_online_value。
能够强制第一个。我似乎看不到最后三个标签。
到目前为止的代码:
library(xml2)
library(tidyverse)
library("stringr")
test_xml <- read_xml("test.xml")
xml_name(test_xml)
xml_name(xml_parent(test_xml))
xml_name(xml_children(test_xml))
# print the full path directory:
test_xml %>% xml_find_all( '//*') %>% xml_path()
test_xml %>% xml_find_all( '//GW_RESPONSE/*') %>% xml_path()
test_xml %>% xml_find_all('//ONLINE_STATUS/*') %>% xml_path()
# device name extracted to a vector
device_name <- test_xml %>% xml_find_all( '//GW_RESPONSE/*') %>% xml_path()
## device_name <- substr(device_name, nchar(device_name) - 12 + 1, nchar(device_name))
device_name <- str_sub(device_name, -12, -1)
以下代码段显示了我想要的数据:
xml_find_first(test_xml, "//ONLINE_STATUS")
输出:
<DEVICE_ONLINE_STATUS id="DEVICE_ONLINE_STATUS" status="FAIL" threshold="UP" value="DOWN"/>
是否可以将此输出转换为向量或数据帧?
谢谢。
样本XML:
<SQV>
<RESPONSE id="RESPONSE" value="RESPONSE"><GW_RESPONSE id="GW_RESPONSE" status="" threshold="" value=""><GATEWAY_1056117CA4AE id="GATEWAY_1056117CA4AE" status="" threshold="" value=""><ONLINE_STATUS id="ONLINE_STATUS" value=""><DEVICE_ONLINE_STATUS id="DEVICE_ONLINE_STATUS" status="FAIL" threshold="UP" value="DOWN"/></ONLINE_STATUS><DEVICE_STATUS id="DEVICE_STATUS" status="FAIL" threshold="" value="FAIL"/></GATEWAY_1056117CA4AE></GW_RESPONSE></RESPONSE>
</SQV>
答案
已解决:
xml_attrs()和xml_attr()
将您带到所需的数据。
例如
xml_find_all(test_xml,“ // DEVICE_ONLINE_STATUS”)%>%xml_attrs()
或
xml_find_all(test_xml,“ // DEVICE_ONLINE_STATUS”)%>%xml_attr(“ id”)
以上是关于R使用XML2将数据从XML提取到数据帧中的主要内容,如果未能解决你的问题,请参考以下文章
R-将提取的文本数据(每个实例作为行)导出为data.frame格式
Spotify API:如何将不同级别的 JSON 信息提取到一个数据帧中