我有下面的XML片段:C#,XML類反序列化問題
<dmFiles>
−
<dmFile dmUpFileGuid="" dmFileDescr="testcase01.pdf" dmFileMetaType="main" dmFileGuid="" dmMimeType="pdf" dmFormat="">
如果我創建一個字符串屬性強類型的C#類的dmFile屬性(例如:dmFileDescr),我怎麼能保證這些屬性將序列化到我的C#類中的屬性?
我有下面的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;