/// <summary> /// Writes a collection of <see cref="IdentificationExperiment"/> to XML /// </summary> /// <param name="experimentCollection">A collection to be written to XML</param> /// <param name="modelDocumentRoot"><see cref="XElement"/> instance that represents root of model XML document</param> private static void WriteIdentificationExperiments(IdentificationExperimentCollection experimentCollection, XElement modelDocumentRoot) { XElement experimentsCollectionElement = new XElement(Elements.IdentificationExperiments); foreach (IdentificationExperiment experiment in experimentCollection.Values) { XElement experimentElement = new XElement(Elements.IdentificationExperiment, new XAttribute(Attributes.Id, experiment.Id.ToString()), new XAttribute(Attributes.Number, experiment.Number.ToString()), new XAttribute(Attributes.RealExperimentId, experiment.RealExperimentId.ToString()) ); XElement parameterValuesCollectionElement = WriteValueCollection(experiment.IdentificationParameterValues, Elements.IdentificationParameterValues, Elements.IdentificationParameterValue); experimentElement.Add(parameterValuesCollectionElement); XElement realCriterionValuesCollectionElement = WriteValueCollection(experiment.MathematicalCriterionValues, Elements.MathematicalCriterionValues, Elements.MathematicalCriterionValue); experimentElement.Add(realCriterionValuesCollectionElement); XElement adequacyCriterionValuesCollectionElement = WriteValueCollection(experiment.AdequacyCriterionValues, Elements.AdequacyCriterionValues, Elements.AdequacyCriterionValue); experimentElement.Add(adequacyCriterionValuesCollectionElement); XElement constraintValuesCollectionElement = WriteValueCollection(experiment.ConstraintValues, Elements.FunctionalConstraintValues, Elements.FunctionalConstraintValue); experimentElement.Add(constraintValuesCollectionElement); WritePropertyCollection(experiment.Properties, experimentElement); experimentsCollectionElement.Add(experimentElement); } modelDocumentRoot.Add(experimentsCollectionElement); }
/// <summary> /// Reads a collection of <see cref="IdentificationExperiment"/> from XML /// </summary> /// <param name="experimentCollection">A collection to be read from XML</param> /// <param name="experimentsCollectionElement"><see cref="XElement"/> to read a collection from</param> private static void ReadIdentificationExperiments(IdentificationExperimentCollection experimentCollection, XElement experimentsCollectionElement) { IEnumerable <XElement> experimentElements = experimentsCollectionElement.Descendants(Elements.IdentificationExperiment); foreach (XElement experimentElement in experimentElements) { TId id = TId.Parse(experimentElement.Attribute(Attributes.Id).Value); int number = Convert.ToInt32(experimentElement.Attribute(Attributes.Number).Value); TId realExperimentId = TId.Parse(experimentElement.Attribute(Attributes.RealExperimentId).Value); IdentificationExperiment experiment = new IdentificationExperiment(id, number, realExperimentId); ReadValueCollection(experiment.IdentificationParameterValues, Elements.IdentificationParameterValues, Elements.IdentificationParameterValue, experimentElement); ReadValueCollection(experiment.MathematicalCriterionValues, Elements.MathematicalCriterionValues, Elements.MathematicalCriterionValue, experimentElement); ReadValueCollection(experiment.AdequacyCriterionValues, Elements.AdequacyCriterionValues, Elements.AdequacyCriterionValue, experimentElement); ReadValueCollection(experiment.ConstraintValues, Elements.FunctionalConstraintValues, Elements.FunctionalConstraintValue, experimentElement); ReadPropertyCollection(experiment.Properties, ReadCollectionElement(Elements.Properties, experimentElement, false)); experimentCollection.Add(experiment); } }