Объединение XML-файлов — распространенная задача в различных сценариях разработки программного обеспечения. В этой статье блога мы рассмотрим несколько методов объединения XML-файлов в один файл с помощью C#. Каждый метод будет сопровождаться примером кода, иллюстрирующим реализацию. Давайте погрузимся!
Метод 1: Класс XmlDocument
using System;
using System.Xml;
public class XmlMerger
{
public static void MergeXmlDocuments(string[] filePaths, string outputFilePath)
{
XmlDocument mergedXml = new XmlDocument();
foreach (string filePath in filePaths)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(filePath);
XmlNode importedNode = mergedXml.ImportNode(xmlDocument.DocumentElement, true);
mergedXml.DocumentElement.AppendChild(importedNode);
}
mergedXml.Save(outputFilePath);
}
}
Метод 2: класс XDocument (LINQ to XML)
using System;
using System.Linq;
using System.Xml.Linq;
public class XmlMerger
{
public static void MergeXmlDocuments(string[] filePaths, string outputFilePath)
{
XDocument mergedXml = new XDocument();
foreach (string filePath in filePaths)
{
XDocument xmlDocument = XDocument.Load(filePath);
mergedXml.Root.Add(xmlDocument.Root.Descendants());
}
mergedXml.Save(outputFilePath);
}
}
Метод 3: класс XmlWriter
using System;
using System.Xml;
public class XmlMerger
{
public static void MergeXmlDocuments(string[] filePaths, string outputFilePath)
{
using (XmlWriter writer = XmlWriter.Create(outputFilePath))
{
writer.WriteStartDocument();
writer.WriteStartElement("Root");
foreach (string filePath in filePaths)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(filePath);
XmlNodeList nodes = xmlDocument.DocumentElement.ChildNodes;
foreach (XmlNode node in nodes)
{
node.WriteTo(writer);
}
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
}
Метод 4: класс XmlSerializer
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
public class XmlMerger
{
public static void MergeXmlDocuments(string[] filePaths, string outputFilePath)
{
List<object> mergedObjects = new List<object>();
foreach (string filePath in filePaths)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<object>));
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
List<object> objects = (List<object>)serializer.Deserialize(fileStream);
mergedObjects.AddRange(objects);
}
}
XmlSerializer mergedSerializer = new XmlSerializer(typeof(List<object>));
using (FileStream mergedFileStream = new FileStream(outputFilePath, FileMode.Create))
{
mergedSerializer.Serialize(mergedFileStream, mergedObjects);
}
}
}
В этой статье мы рассмотрели четыре различных метода объединения XML-файлов в один файл с помощью C#. Каждый метод имеет свои преимущества и может быть выбран в зависимости от конкретных требований. Используя класс XmlDocument, класс XDocument (LINQ to XML), класс XmlWriter или класс XmlSerializer, разработчики могут легко объединять XML-файлы для удовлетворения потребностей своих приложений.