2009-10-19 96 views
0

我有下面的XML片段:C#,XML類反序列化問題

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

如果我創建一個字符串屬性強類型的C#類的dmFile屬性(例如:dmFileDescr),我怎麼能保證這些屬性將序列化到我的C#類中的屬性?

回答

1

通過在您的類成員上使用Xml屬性。使用[XmlAttribute("name")]。 你的實現應該是這樣的:

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

    ... 
} 
0

可以(反)序列從/爲XML的XmlSerializer的和標記了提供了XML的序列化屬性的目標類。

用正確的屬性標記您的公共屬性。它應該是XmlAttributeAttribute。 封閉類必須映射到dmFile-Element上(XmlRootAttribute) 如果調用該屬性的方式不同,或者該類的調用方式與XML元素的調用方式不同,則需要指定XML元素/屬性名稱。

1

試試這個:

[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;