Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Function to parse data from xml
- parse_xml <-function(FileName) {
- xmldata <- xmlParse(FileName)
- result_nodes = XML::getNodeSet(xmldata , "//IOTModellerLog/Event")
- if (!length(result_nodes)==0){
- abc <- rbindlist(lapply(result_nodes,function(x) data.frame(as.list(unlist(xmlToList(x))))),use.names = TRUE, fill = TRUE)
- ....do other calculations....
- abc <- data.frame(lapply(abc, as.character), stringsAsFactors = FALSE)
- }
- }
- sbind = function(x, y, fill=NA) {
- sbind.fill = function(d, cols){
- for(c in cols)
- d[[c]] = fill
- d
- }
- x = sbind.fill(x, setdiff(names(y),names(x)))
- y = sbind.fill(y, setdiff(names(x),names(y)))
- rbind(x, y)
- }
- path <- "/home/mycomp/Documents/xmls/xmlfrommtar"
- workerFunc <- function(file) {
- dat <- parse_xml(file)
- df <- sbind(df,dat)
- }
- cl <- makeCluster(detectCores())
- files <- dir(path, pattern="*.xml|*.XML", full.names = T)
- part <- clusterSplit(cl, seq_along(files))
- filesPart <- lapply(part, function(p) files[p])
- results <- clusterApply(cl, filesPart, workerFunc)
- Error in checkForRemoteErrors(val) :
- 4 nodes produced errors; first error: could not find function "parse_xml"
- IOTModellerLog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" DeviceID="7430180" ClientID="12324" FileCreationDate="2017-03-01T22:40:03" FileVersion="2" EventClassID="65535" IOTLogCreationDate="2017-03-01T12:29:54" SampleID="1" xsi:noNamespaceSchemaLocation="/opt/nds/ams_proxy/webapps/ams_proxy/WEB-INF/amsXmlSchema.xsd">
- <Event EventTime="2017-02-27T18:33:58">
- <IOTEvent State="PowerOn" />
- </Event>
- <Event EventTime="2017-02-28T08:59:03">
- <DataEvent>
- <Model>1</Model>
- <DataType>1</DataType>
- <DataValue>0301</DataValue>
- </DataEvent>
- </Event>
- <Event EventTime="2017-02-28T08:59:13">
- <DataEvent>
- <Model>1</Model>
- <DataType>1</DataType>
- <DataValue>0401</DataValue>
- </DataEvent>
- </Event>
- </IOTModellerLog>
Add Comment
Please, Sign In to add comment