/// <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 == "WordsCount") { string dataToProcess = root.SelectSingleNode("/task/data").InnerText; List <WordCount> result = CalculateWordsCounts(dataToProcess); Serialize(result, ref targetData); } else if (functionName == "MeanStdDev") { string dataToProcess = root.SelectSingleNode("/task/data").InnerText; MeanStdDevResult results = CalculateMeanStdDev(dataToProcess); Serialize(results, 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(MeanStdDevResult results, ref XmlDocument document) { XmlSerializer serializer = new XmlSerializer(typeof(MeanStdDevResult)); using (XmlWriter writer = document.CreateNavigator().AppendChild()) { serializer.Serialize(writer, results); } }