public static TransformResult Transform(string transformationPath, IDictionary <string, string> parameters, string[] targetFiles, bool preserveWhitespace = true) { if (!File.Exists(transformationPath)) { throw new ArgumentException("Transformation path did not exist"); } if (targetFiles == null || targetFiles.Length == 0) { return(null); } foreach (var file in targetFiles) { if (!File.Exists(file)) { throw new ArgumentException("Target file " + file + " did not exist"); } } var logger = new CollectionXmlTransformationLogger(); var transformText = File.ReadAllText(transformationPath); transformText = ParameterizeText(transformText, parameters); var transformation = new XmlTransformation(transformText, false, logger); try { foreach (var file in targetFiles) { var input = File.ReadAllText(file); var document = new XmlTransformableDocument(); document.PreserveWhitespace = preserveWhitespace; document.LoadXml(input); transformation.Apply(document); if (logger.HasErrors) { break; } if (document.IsChanged) { document.Save(file); } } } catch (Exception ex) { throw new XmlTransformationException( "Transform failed. Log output was: " + string.Join("\n", logger.Messages.Select(x => x.Type.ToString() + ": " + x.Text)), ex); } return(new TransformResult(logger.Messages.ToArray(), !logger.HasErrors)); }
public static TransformResult Transform(string transformationPath, IDictionary<string, string> parameters, string[] targetFiles, bool preserveWhitespace = true) { if (!File.Exists(transformationPath)) throw new ArgumentException("Transformation path did not exist"); if (targetFiles == null || targetFiles.Length == 0) return null; foreach (var file in targetFiles) { if (!File.Exists(file)) throw new ArgumentException("Target file " + file + " did not exist"); } var logger = new CollectionXmlTransformationLogger(); var transformText = File.ReadAllText(transformationPath); transformText = ParameterizeText(transformText, parameters); var transformation = new XmlTransformation(transformText, false, logger); try { foreach (var file in targetFiles) { var input = File.ReadAllText(file); var document = new XmlTransformableDocument(); document.PreserveWhitespace = preserveWhitespace; document.LoadXml(input); transformation.Apply(document); if (logger.HasErrors) break; if (document.IsChanged) { document.Save(file); } } } catch (Exception ex) { throw new XmlTransformationException( "Transform failed. Log output was: " + string.Join("\n", logger.Messages.Select(x => x.Type.ToString() + ": " + x.Text)), ex); } return new TransformResult(logger.Messages.ToArray(), !logger.HasErrors); }