C#,XML类反序列化问题

问题描述:

我有下面的XML片段:C#,XML类反序列化问题

<dmFiles> 
− 
<dmFile dmUpFileGuid="" dmFileDescr="testcase01.pdf" dmFileMetaType="main" dmFileGuid="" dmMimeType="pdf" dmFormat=""> 

如果我创建一个字符串属性强类型的C#类的dmFile属性(例如:dmFileDescr),我怎么能保证这些属性将序列化到我的C#类中的属性?

通过在您的类成员上使用Xml属性。使用[XmlAttribute("name")]。 你的实现应该是这样的:

[XmlRoot("dmFile")] 
public class DmFile 
{ 
    [XmlAttribute("dmUpFileGuid")] 
    public String UpFileGuid { get;set; } 

    ... 
} 

可以(反)序列从/为XML的XmlSerializer的和标记了提供了XML的序列化属性的目标类。

用正确的属性标记您的公共属性。它应该是XmlAttributeAttribute。 封闭类必须映射到dmFile-Element上(XmlRootAttribute) 如果调用该属性的方式不同,或者该类的调用方式与XML元素的调用方式不同,则需要指定XML元素/属性名称。

试试这个:

[Serializable] 
[XmlRoot(ElementName="dmFile")] 
public class File 
{ 
    [XmlAttribute(AttributeName="dmUpFileGuid")] 
    public string UploadGuid { get; set; } 
    [XmlAttribute(AttributeName = "dmFileDescr")] 
    public string Description { get; set; } 
    [XmlAttribute(AttributeName = "dmFileMetaType")] 
    public string MetaType { get; set; } 
    [XmlAttribute(AttributeName = "dmFileGuid")] 
    public string FileGuid { get; set; } 
    [XmlAttribute(AttributeName = "dmMimeType")] 
    public string MimeType { get; set; } 
    [XmlAttribute(AttributeName = "dmFormat")] 
    public string Format { get; set; } 
} 

和反序列化你的XML如下:

XmlSerializer s = new XmlSerializer(typeof(File)); 
File file = s.Deserialize(new StringReader(@"<dmFile ... />")) as File;