Я генерирую RSS-канал очень просто, используя LINQ to XML. Честно говоря, это самый хороший XML API, о котором я знаю.
У меня есть несколько методов расширения, которые я использую, чтобы сделать его еще проще - он конвертирует из анонимного типа в элементы или атрибуты:
public static IEnumerable<XElement> AsXElements(this object source)
{
foreach (PropertyInfo prop in source.GetType().GetProperties())
{
object value = prop.GetValue(source, null);
yield return new XElement(prop.Name.Replace("_", "-"), value);
}
}
public static IEnumerable<XAttribute> AsXAttributes(this object source)
{
foreach (PropertyInfo prop in source.GetType().GetProperties())
{
object value = prop.GetValue(source, null);
yield return new XAttribute(prop.Name.Replace("_", "-"), value ?? "");
}
}
Это может быть не совсем уместно для вас, но я считаю это очень удобным. Конечно, это предполагает, что вы используете .NET 3.5 ...