Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }