序列化没有根元素的数组
我正在尝试在序列化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
这不是一个好东西。