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;