/// <summary> /// Esegue il task i cui dati sono accessibili dal documento xml di origine specificato /// e salva i risultati ottenuti dall'esecuzione del task sul documento xml specificato /// come destinazione. /// </summary> /// <param name="sourceData">documento xml da cui leggere i dati del task da eseguire</param> /// <param name="targetData">documento xml su cui scrivere i risultati del task eseguito</param> internal static void Execute(XmlDocument sourceData, ref XmlDocument targetData) { XmlElement root = sourceData.DocumentElement; XmlNodeList nodeList = root.SelectNodes("/task/function[@functionName]/@functionName"); string functionName = (nodeList.Count == 1 ? nodeList.Item(0).Value : string.Empty); if (functionName == "MinMax") { string dataToProcess = root.SelectSingleNode("/task/data").InnerText; MinMaxResult result = CalculateMinMax(dataToProcess); Serialize(result, ref targetData); } else if (functionName == "MinMaxIdx") { string dataToProcess = root.SelectSingleNode("/task/data").InnerText; MinMaxIdxResult result = CalculateMinMaxIdx(dataToProcess); Serialize(result, ref targetData); } else { throw new TaskProcessingException(string.Format("Funzione non trovata: {0}.", functionName)); } }
/// <summary> /// Permette di scrivere il risultato specificato all'interno del documento xml specificato. /// </summary> /// <param name="result">risultato da scrivere</param> /// <param name="document">documento xml di destinazione</param> private static void Serialize(MinMaxResult result, ref XmlDocument document) { XmlSerializer serializer = new XmlSerializer(typeof(MinMaxResult)); using (XmlWriter writer = document.CreateNavigator().AppendChild()) { serializer.Serialize(writer, result); } }