public void WriteOut(MergeCandidateContainer merges, string outputPath) { using (var writer = new StreamWriter(Path.Combine(outputPath, string.Format("merge-candidates-{0}.html", DateTime.Now.ToString()).MakePathSafe()))) { writer.Write(GenerateHtmlOutput(merges)); } }
private string GenerateHtmlOutput(MergeCandidateContainer mergeData) { // Serialize the build report data. Stream serializationStream = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(mergeData.GetType()); serializer.Serialize(serializationStream, mergeData); // Load the XSLT build email template. Stream styleSheetStream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _xsltTemplateLocation), FileMode.Open); XmlReader styleSheetReader = XmlReader.Create(styleSheetStream); XslCompiledTransform xslTransformer = new XslCompiledTransform(); xslTransformer.Load(styleSheetReader); styleSheetStream.Close(); styleSheetReader.Close(); // Generate object reader/writer. Stream outputStream = new MemoryStream(); XmlWriter writer = XmlWriter.Create(outputStream, new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment }); serializationStream.Position = 0; XmlReader reader = XmlReader.Create(serializationStream); // Perform the transform. xslTransformer.Transform(reader, writer); // Return the generated HTML content. outputStream.Position = 0; StreamReader outputReader = new StreamReader(outputStream); string contentBody = outputReader.ReadToEnd(); outputReader.Close(); return(contentBody); }