diff --git a/R/importWaterML1.r b/R/importWaterML1.r index 8d57474a15884c1d40d1c45001d11d9b5b40cdd4..096b3fdaf04edef08a95e9d1996904381b7f0680 100644 --- a/R/importWaterML1.r +++ b/R/importWaterML1.r @@ -75,6 +75,10 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ns <- xmlNamespaceDefinitions(doc, simplify = TRUE) timeSeries <- xpathApply(doc, "//ns1:timeSeries", namespaces = ns) + if(0 == length(timeSeries)){ + stop("No data to return for URL:", obs_url) + } + for (i in 1:length(timeSeries)){ chunk <- xmlDoc(timeSeries[[i]]) @@ -107,7 +111,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ attNames <- xpathSApply(subChunk, "ns1:value/@*",namespaces = chunkNS) attributeNames <- unique(names(attNames)) - + x <- lapply(attributeNames, function(x) xpathSApply(subChunk, paste0("ns1:value/@",x),namespaces = chunkNS)) valueName <- paste(methodID,pCode,statCd,sep="_") @@ -119,8 +123,17 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ stringsAsFactors=FALSE) for(k in 1:length(attributeNames)){ - df <- cbind(df, as.character(x[[k]]),stringsAsFactors=FALSE) - names(df)[length(df)] <- attributeNames[k] + attVal <- as.character(x[[k]]) + if(length(attVal) == nrow(df)){ + df$temp <- as.character(x[[k]]) + + } else { + attrList <- xpathApply(subChunk, "ns1:value", namespaces = chunkNS, xmlAttrs) + df$temp <- sapply(1:nrow(df),function(x) as.character(attrList[[x]][attributeNames[k]])) + df$temp[is.na(df$temp)] <- "" + } + names(df)[which(names(df) %in% "temp")] <- attributeNames[k] + } df <- cbind(df, get(valueName)) @@ -151,7 +164,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ df$tz_cd <- tzAbbriev } else { - datetime <- as.Date(strptime(xpathSApply(subChunk, "ns1:value/@dateTime",namespaces = chunkNS),"%Y-%m-%dT%H:%M:%S")) + datetime <- as.character(xpathSApply(subChunk, "ns1:value/@dateTime",namespaces = chunkNS)) } df$dateTime <- datetime diff --git a/R/importWaterML2.r b/R/importWaterML2.r index d572e04ce6a2ead384f841dafc8a8ddc016410b5..2f19c6e7018086db7c44633e9fae504c088002a1 100644 --- a/R/importWaterML2.r +++ b/R/importWaterML2.r @@ -81,6 +81,10 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){ timeSeries <- xpathApply(doc, "//wml2:Collection", namespaces = ns) + if(0 == length(timeSeries)){ + stop("No data to return for URL:", obs_url) + } + for (i in 1:length(timeSeries)){ chunk <- xmlDoc(timeSeries[[i]])