Если вы имеете в виду «самый быстрый» как самый быстрый способ написания некоторого кода для его выполнения (и самый простой), то тогда вам нужно создать собственный класс и сериализовать его с помощью XmlSerializer . .
Создайте свои классы следующим образом:
[XmlRoot("EmployeeConfiguration")]
public class EmployeeConfiguration
{
[XmlArray("Bosses")]
[XmlArrayItem("Boss")]
public List<Boss> Bosses { get; set; }
}
public class Boss
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlArray("Employees")]
[XmlArrayItem("Employee")]
public List<Employee> Employees { get; set; }
}
public class Employee
{
[XmlAttribute]
public string Id { get; set; }
}
и затем вы можете сериализовать их так:
// create a serializer for the root type above
var serializer = new XmlSerializer(typeof (EmployeeConfiguration));
// by default, the serializer will write out the "xsi" and "xsd" namespaces to any output.
// you don't want these, so this will inhibit it.
var namespaces = new XmlSerializerNamespaces(new [] { new XmlQualifiedName("", "") });
// serialize to stream or writer
serializer.Serialize(outputStreamOrWriter, config, namespaces);
Как видите, использование различных атрибутов в классах указывает сериализатору, как он должен сериализовать класс. Некоторые из тех, что я включил выше, на самом деле являются настройками по умолчанию, и их явно не нужно указывать - но я включил их, чтобы показать вам, как это делается.