Я новичок в 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"/>
Любой способ получить эти выходные данные в вектор или фрейм данных?
Спасибо.
SAMPLE 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>