Объединение нескольких XML файлов - C#

Узнай цену своей работы

Формулировка задачи:

есть папка, где хранится неизвестное число файлов *.xml. нужно объединять в один файл части пяти файлов (не весь файл, а его часть от <press> до </press>), имена которых начинаются не с "!". добавлять восклицательный знак в начало имен файлов, которые использовались для объединения.
private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                int count = 0;
                string u = "";
                string na = "";
                DirectoryInfo direct = new DirectoryInfo(textBox1.Text);
                StringBuilder fileList = new StringBuilder();
                foreach (FileInfo f in direct.GetFiles("*.xml"))
                {
                    u = Convert.ToString(fileList.AppendLine(f.Name));
                    count += 1;
                    na = na + "\r\n" + f.Name;
 
                    string directSize = Convert.ToString(count);
                    MessageBox.Show(na);

                    if (f.Name.StartsWith("!"))
                    {}
                    else
                    {
                       
                    }
                }
 
            }
        }

Решение задачи: «Объединение нескольких XML файлов»

textual
Листинг программы
private void AppendXML(string filename, XmlNodeList list)
{
     XmlDocument xml = new XmlDocument();
     xml.Load(filename);
     list.ForAll(xml.DocumentElement().AppendChild);
     FileStream fs = new FileStream(filename,FileMode.Create);
     xml.Save(fs);
}
private void concatFunction(String directoryPath)
{
      String[] files = Directory.GetFiles(directoryPath, "*.xml");
      List<String> partCollection = new List<String>();
      var f = files.Where(w=>w[0]!='!');
      if(f.Count()<5) return;
       foreach(String file in f)
       {
             XmlDocument xml = new XmlDocument();
             xml.Load(f);
             AppendXML("имя главного файла", xml.DocumentElement.SelectNodes("/press"));
             File.Move(file, Path.GetDirectoryName(file) + Path.DirectorySeparatorChar + "!" + Path.GetFileName(file));
             File.Delete(file);
      }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы