1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#' @name SDMXOrganisationSchemes
#' @rdname SDMXOrganisationSchemes
#' @aliases SDMXOrganisationSchemes,SDMXOrganisationSchemes-method
#'
#' @usage
#' SDMXOrganisationSchemes(xmlObj, namespaces)
#'
#' @param xmlObj object of class "XMLInternalDocument derived from XML package
#' @param namespaces object of class "data.frame" given the list of namespace URIs
#' @return an object of class "OrganisationSchemes"
#'
#' @seealso \link{readSDMX}
#'
SDMXOrganisationSchemes <- function(xmlObj, namespaces){
new("SDMXOrganisationSchemes",
SDMX(xmlObj, namespaces),
organisationSchemes = organisationSchemes.SDMXOrganisationSchemes(xmlObj, namespaces)
)
}
#get list of SDMXOrganisationScheme (SDMXAgencyScheme)
#================================================
organisationSchemes.SDMXOrganisationSchemes <- function(xmlObj, namespaces){
agSchemes <- list()
sdmxVersion <- version.SDMXSchema(xmlObj, namespaces)
VERSION.21 <- sdmxVersion == "2.1"
messageNsString <- "message"
if(isRegistryInterfaceEnvelope(xmlObj, FALSE)) messageNsString <- "registry"
messageNs <- findNamespace(namespaces, messageNsString)
strNs <- findNamespace(namespaces, "structure")
#agencyScheme
if(VERSION.21){
agXML <- getNodeSet(xmlObj,"//mes:Structures/str:OrganisationSchemes/str:AgencyScheme",
namespaces = c(mes = as.character(messageNs), str = as.character(strNs)))
agSchemes <- lapply(agXML, SDMXAgencyScheme, namespaces)
}
return(agSchemes)
}
#methods
as.data.frame.SDMXOrganisationSchemes <- function(x, ...){
out <- do.call("rbind.fill",
lapply(x@organisationSchemes,
function(as){
#TODO implement as.data.frame
asf <- data.frame(
id = slot(as, "id"),
agencyID = slot(as, "agencyID"),
version = slot(as, "version"),
uri = slot(as, "uri"),
urn = slot(as, "urn"),
isExternalReference = slot(as, "isExternalReference"),
isFinal = slot(as, "isFinal"),
validFrom = slot(as, "validFrom"),
validTo = slot(as, "validTo"),
stringsAsFactors = FALSE
)
return(asf)
})
)
return(encodeSDMXOutput(out))
}
setAs("SDMXOrganisationSchemes", "data.frame",
function(from) as.data.frame.SDMXOrganisationSchemes(from))
|