(кстати, это не связано с вопросом, но вы должны стремиться избегать открытых полей, по многим причинам, рассматриваемым во многих вопросах stackoverflow)
Q3: просто:
[XmlElement("Class")]
public List<ClassInfo> ClassInfoList;
Q2 re название верхнего уровня; Вы можете использовать
[XmlRoot("somethingFun")]
public class Module { ... }
Q2 re имена членов:
[XmlElement("blocks")]
public int BlocksCovered;
(см. Также [XmlAttribute(...)]
)
Q1 Удаление xsi и т. Д. Можно выполнить с помощью XmlSerializerNamespaces
:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
var ser = new XmlSerializer(typeof(Module));
ser.Serialize(destination, module, ns);