Xml反序列化 - 多种类型的序列

时间:2009-09-28 22:25:15

标签: c# .net xml-serialization

鉴于以下片段,其中链接是一系列无界图像链接和文档链接,deserailized类应该是什么?

<Values>
   <Links>
      <ImageLink>http://#</ImageLink>
      <ImageLink>http://#</ImageLink>
      <DocumentLink>http://#</DocumentLink>
   </Links>
</Values>

通常情况下,如果它只是我可能有的图像链接数组

public class Values
{
   public imagelink[] ImageLinks { get; set; }
}

public class ImageLink
{
   public string Value { get; set; }
}

但是上面的xml我很难过。

是的,我无法控制xml。

2 个答案:

答案 0 :(得分:2)

这有效

public class DocumentLink : Link
{
}

public class ImageLink : Link
{
}

public class Link
{
    [XmlText]
    public string Href { get; set; }
}

public class Values
{
    [XmlArrayItem(ElementName = "ImageLink", Type = typeof(ImageLink))]
    [XmlArrayItem(ElementName = "DocumentLink", Type = typeof(DocumentLink))]
    public Link[] Links { get; set; }
}

答案 1 :(得分:1)

你应该有一个基类链接如下

public class Link
{
  public string Href { get; set; }
}

public class ImageLink : Link
{
}

public class DocumentLink : Link
{
}

您的价值观类似乎:

public class Values
{
   public Link[] links { get; set; }
}

或者,您可以使用ArrayList而不是强类型数组。

相关问题