R使用XML2将数据从XML提取到数据帧中

问题描述 投票:0回答:1

我是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>
r xml-parsing xml2
1个回答
0
投票

已解决:

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”)

© www.soinside.com 2019 - 2024. All rights reserved.