C#,XML到类DeSerialization问题

时间:2009-10-19 10:48:39

标签: c# xml serialization

我有以下XML代码段:

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

如果我创建一个强类型的C#类,其中包含dmFile属性的字符串属性(例如:dmFileDescr),我如何确保这些属性将序列化为我的c#类中的属性?

3 个答案:

答案 0 :(得分:1)

在类成员上使用Xml属性。使用[XmlAttribute("name")]。 您的实现将如下所示:

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

   ...
}

答案 1 :(得分: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;

答案 2 :(得分:0)

您可以使用 XmlSerializer (de)序列化/到XML,并使用为Xml-Serialization提供的属性标记目标类。

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