/// <summary> /// Write query structure request /// </summary> /// <param name="request"> /// THe <see cref="IQueryStructureRequestInfo"/> to write /// </param> private void WriteQueryStructureRequest(IQueryStructureRequestInfo request) { this.WriteStartElement(ElementNameTable.QueryStructureRequest); this.WriteAttribute(AttributeNameTable.resolveReferences, request.ResolveReferences); if (!request.ReturnDetails) { // defaults to true. It is an extension to SDMX. this.TryWriteAttribute(AttributeNameTable.returnDetails, request.ReturnDetails); } foreach (IReferenceInfo refBean in request.References) { this.WriteRef(refBean); } this.WriteEndElement(); // </QueryStructureRequest> }
/// <summary> /// Handle QueryStructureRequest Child elements /// </summary> /// <param name="parent"> /// The parent IQueryStructureRequestInfo object /// </param> /// <param name="localName"> /// The name of the current xml element /// </param> /// <returns> /// The <see cref="StructureReaderBaseV20.ElementActions"/>. /// </returns> private ElementActions HandleChildElements(IQueryStructureRequestInfo parent, object localName) { SdmxStructureEnumType sdmxStructure; if (NameTableCache.IsElement(localName, ElementNameTable.DataflowRef)) { IDataflowReferenceInfo dataflowReferenceInfo = new DataflowReferenceInfo(); parent.References.Add(dataflowReferenceInfo); return this.AddReferenceAction(dataflowReferenceInfo, this.HandleChildElements, this.HandleTextChildElement); } if (NameTableCache.IsElement(localName, ElementNameTable.MetadataflowRef)) { sdmxStructure = SdmxStructureEnumType.MetadataFlow; } else if (NameTableCache.IsElement(localName, ElementNameTable.CodelistRef)) { sdmxStructure = SdmxStructureEnumType.CodeList; } else if (NameTableCache.IsElement(localName, ElementNameTable.HierarchicalCodelistRef)) { sdmxStructure = SdmxStructureEnumType.HierarchicalCodelist; } else if (NameTableCache.IsElement(localName, ElementNameTable.CategorySchemeRef)) { sdmxStructure = SdmxStructureEnumType.CategoryScheme; } else if (NameTableCache.IsElement(localName, ElementNameTable.KeyFamilyRef)) { sdmxStructure = SdmxStructureEnumType.Dsd; } else if (NameTableCache.IsElement(localName, ElementNameTable.MetadataStructureRef)) { sdmxStructure = SdmxStructureEnumType.Msd; } else { return null; } IReferenceInfo referenceInfo = new ReferenceInfo(sdmxStructure); parent.References.Add(referenceInfo); return this.AddReferenceAction(referenceInfo, DoNothingComplex, this.HandleTextChildElement); }