Объединение нескольких 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);
}
}