/// <summary> /// Writes the cross data. /// </summary> /// <param name="outputFileName"> /// Name of the output file. /// </param> /// <param name="crossSectionalDataStructureObject"> /// The cross sectional data structure object. /// </param> private static void WriteCrossDataNoTimeFlat(string outputFileName, ICrossSectionalDataStructureObject crossSectionalDataStructureObject) { using (XmlWriter writer = XmlWriter.Create(outputFileName, new XmlWriterSettings { Indent = true })) using (ICrossSectionalWriterEngine crossSectionalWriter = new CrossSectionalWriterEngine(writer, SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwo))) { crossSectionalWriter.WriteHeader(new HeaderImpl("TEST_ID", "TEST_SENDER")); crossSectionalWriter.StartDataset(null, crossSectionalDataStructureObject, null); crossSectionalWriter.StartXSGroup(); crossSectionalWriter.StartSection(); crossSectionalWriter.StartXSObservation("OBS_VALUE", "1"); crossSectionalWriter.WriteXSObservationKeyValue("FREQ", "Q"); crossSectionalWriter.WriteXSObservationKeyValue("ADJUSTMENT", "N"); crossSectionalWriter.WriteXSObservationKeyValue("STS_ACTIVITY", "A"); crossSectionalWriter.WriteAttributeValue("DECIMALS", "3"); } }
/// <summary> /// The main. /// </summary> /// <param name="args"> /// The args. /// </param> public static void Main(string[] args) { // 1. We need a IDataStructureObject. In this example we read it from a file. Alternative we could build it from a mutable object. IDataStructureObject dataStructure; using (IReadableDataLocation readable = new FileReadableDataLocation("ESTAT+DEMOGRAPHY+2.1.xml")) { IStructureWorkspace structureWorkspace = _parsingManager.ParseStructures(readable); ISdmxObjects structureBeans = structureWorkspace.GetStructureObjects(false); dataStructure = structureBeans.DataStructures.FirstOrDefault(); } if (dataStructure == null) { throw new InvalidOperationException("Could not build dataStructure object"); } using (XmlWriter writer = XmlWriter.Create("re-using-cross-writer.xml", new XmlWriterSettings { Indent = true })) { // initialize the data writing engine. It can be for SDMX versions 2.0 only. var dataWriterEngine = new CrossSectionalWriterEngine(writer, SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwo)); // write header dataWriterEngine.WriteHeader(new HeaderImpl("ZZ9", "ZZ9")); // start dataset dataWriterEngine.StartDataset(null, dataStructure, null); // write dataset attributes dataWriterEngine.WriteAttributeValue("REV_NUM", "1"); dataWriterEngine.WriteAttributeValue("TAB_NUM", "RQEL11V1"); // write 1 group entry dataWriterEngine.StartXSGroup(); dataWriterEngine.WriteXSGroupKeyValue("FREQ", "A"); dataWriterEngine.WriteXSGroupKeyValue("COUNTRY", "LU"); dataWriterEngine.WriteXSGroupKeyValue("TIME", "1920"); dataWriterEngine.WriteAttributeValue("TIME_FORMAT", "P1Y"); // write a series entry dataWriterEngine.StartSection(); dataWriterEngine.WriteAttributeValue("UNIT_MULT", "0"); dataWriterEngine.WriteAttributeValue("DECI", "1"); dataWriterEngine.WriteAttributeValue("UNIT", "UNITS"); // write observations for the abose section dataWriterEngine.StartXSObservation("PJAN1T", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("LBIRTHST", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("DEATHST", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("ADJT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("LBIRTHOUT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("DEATHUN1", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("MAR", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("DIV", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("IMMIT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("EMIGT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("NETMT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("TFRNSI", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); dataWriterEngine.StartXSObservation("LEXPNSIT", "2030.1"); dataWriterEngine.WriteXSObservationKeyValue("SEX", "F"); dataWriterEngine.WriteAttributeValue("OBS_STATUS", "P"); // close cross Writer dataWriterEngine.Close(); } }