如何为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是一个好主意…