Пример #1
0
    public static void Process(Config config)
    {
        if(!Directory.Exists(config.output_folder))
        {
            Console.WriteLine("creating directory {0}", config.output_folder);
            Directory.CreateDirectory(config.output_folder);
        }

        foreach(String filename in config.files_to_fix)
        {
            Console.WriteLine("processing {0}", filename);

            XmlDocument doc=new XmlDocument();
            doc.PreserveWhitespace=true;
            using(StreamReader reader=new StreamReader(filename, config.GetEncoding()))
            {
                doc.Load(reader);
            }

            ResetCountsByTag(config.TagsToFix());

            foreach(XmlNode tag in doc.SelectNodes("//*"))
            {
                //do we have to treat that tag (according to config)?
                if(config.MustTreatTag(tag.Name))
                {
                    //do we modify the name attribute or delete it?
                    if(config.MustDeleteNameOfTag(tag.Name))
                    {
                        DeleteNameAttribute(tag);
                    }
                    else
                    {
                        ModifyNameAttribute(tag, config.GetNamePrefix(tag.Name));
                    }
                }
            }

            string output = Path.Combine(config.output_folder, Path.GetFileName(filename));
            Console.WriteLine("saving file {0}", output);
            using(StreamWriter stream=new StreamWriter(output, false, config.GetEncoding()))
            {
                XmlWriterSettings settings=new XmlWriterSettings();
                settings.OmitXmlDeclaration=true;
                using(XmlWriter writer=XmlWriter.Create(stream, settings))
                {
                    doc.Save(writer);
                }
            }
        }
    }