public void WriteXml(System.Xml.XmlWriter writer) { writer.WriteAttributeString("xmlVersion", xmlVersion.ToString()); writer.WriteStartElement("Info"); writer.WriteElementString("ID", ID); writer.WriteElementString("Version", Version); writer.WriteElementString("Label", Label); writer.WriteElementString("Name", Classname); writer.WriteElementString("Author", Author); writer.WriteElementString("Description", Description); writer.WriteEndElement(); writer.WriteStartElement("Input"); foreach (IOItemDefinition item in IOSpecDefinition.Input.Values) { item.WriteXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("Output"); foreach (IOItemDefinition item in IOSpecDefinition.Output.Values) { item.WriteXml(writer); } writer.WriteEndElement(); ConfigurationWrapperDefinition.WriteXml(writer); writer.WriteStartElement("ComponentGraph"); TraceLab.Core.Experiments.ExperimentSerializer.SerializeExperiment(writer, ComponentGraph); writer.WriteEndElement(); }
public void ReadXml(System.Xml.XmlReader reader) { int version = int.Parse(reader.GetAttribute("xmlVersion")); if (version != xmlVersion && version != 1) { throw new InvalidOperationException("Version file not recognized"); } XPathDocument doc = new XPathDocument(reader); XPathNavigator nav = doc.CreateNavigator(); XPathNavigator iter = ReadComponentInfo(nav); if (version == xmlVersion) { ReadCurrentVersionIODefinitions(nav); } else if (version == 1) { ReadOldIODefinitions(nav); } iter = nav.SelectSingleNode("/CompositeComponentMetadataDefinition/ConfigDefinition"); ConfigurationWrapperDefinition.ReadXml(iter.ReadSubtree()); //get experiment xml -> reading this xml is done in PostProcessReadXml iter = nav.SelectSingleNode("/CompositeComponentMetadataDefinition/ComponentGraph"); m_experimentXml = iter.InnerXml; //read tags Tags = new ComponentTags(ID); XPathNodeIterator tagsIterator = nav.Select("/CompositeComponentMetadataDefinition/Tags//Tag"); while (tagsIterator.MoveNext()) { string tagValue = tagsIterator.Current.Value; Tags.SetTag(tagValue, false); } }