序列化没有根元素的数组

我正在尝试在序列化XML时获得此结果

  C:\test.txt  1 2 4 5    

我已经尝试过不同的东西

 [Serializable] [XmlRoot("Test")] public class Test { [XmlElement("Category")] public List Category= new List(); } [Serializable] [XmlRoot("Category")] public class Category { [XmlElement("FileName")] public string FileName { get; set; } [XmlElement("Property")] public List Properties = new List(); } [Serializable] public class Property { public string Prop1 { get; set; } public string Prop2 { get; set; } } 

但我仍然得到这个输出:

   C:\test.txt  1 2   4 5    

如何删除Property标签? 非常感谢提前

如果你真的需要确切的输出,如上所述,你可以使用这样的解决方法:

 [Serializable] public partial class Test { public List Category; } [Serializable] public partial class Category { [XmlElement("FileName")] public string FileName; [XmlElement("Prop1")] [XmlElement("Prop2")] [XmlChoiceIdentifier("propName")] public string[] Properties; [XmlIgnore] public PropName[] propName; } public enum PropName { Prop1, Prop2, } 

不,如果不把事情变得复杂,这是不可能的。 一种选择是实现IXmlSerializable ,这很难 100%正确。 您也可以通过创建两个子类型,使用基于类型的[XmlArrayItem]版本,并将模型破解为碎片。 坦率地说,我认为这也不值得。

我个人的偏好是选择不同的布局,或使用LINQ-to-XML。 对于XmlSerializer这不是一个好东西。