如何为C#XML序列化添加属性

我有序列化和对象的问题,我可以得到它来创build除了我有一个元素需要一个值和一个属性的地方的所有正确的输出。 这是所需的输出:

<Root> <Method>Retrieve</Method> <Options> <Filter> <Times> <TimeFrom>2009-06-17</TimeFrom> </Times> <Document type="word">document name</Document> </Filter> </Options> </AdCourierAPI> 

我可以构build所有这些,但无法find设置Documenttypes属性的方法,这里是对象类的一部分

 [XmlRoot("Root"), Serializable] public class Root { [XmlElement("Method")] public string method="RetrieveApplications"; [XmlElement("Options")] public _Options Options; } public class _Options { [XmlElement("Filter")] public _Filter Filter; } public class _Filter { [XmlElement("Times")] public _Times Times; [XmlElement("Documents")] public string Documents; } 

这给了我:

 <Document>document name</Document> 

而不是:

 <Document type="word">document name</Document> 

但我无法find一个方法来纠正这一点,请指教。

谢谢

你在哪里存储type

通常你可以有这样的东西:

 class Document { [XmlAttribute("type")] public string Type { get; set; } [XmlText] public string Name { get; set; } } public class _Filter { [XmlElement("Times")] public _Times Times; [XmlElement("Document")] public Document Document; } 

string类没有一个type属性,所以你不能用它来创build所需的输出。 你应该创build一个Document类:

 public class Document { [XmlText] public string Name; [XmlAttribute("type")] public string Type; } 

你应该改变Document属性来inputDocument

这听起来像你需要一个额外的类:

 public class Document { [XmlAttribute("type")] public string Type { get; set; } [XmlText] public string Name { get; set; } } 

如果一个实例(例子中)有Type = "word"Name = "document name" ; documents将是一个List<Document>

顺便说一句 – 公共领域很less是一个好主意…