如何在C#中将XML元素反序列化为具有属性和文本的元素数组?

我在尝试反序列化这个XML时遇到问题:

  http://abc.co.uk http://ebay.co.uk http://stackoverflow.com  

使用代码:

 [XmlRoot("links")] public class LinksInterface { [XmlElement("link")] public List Links; public class LinkElement { [XmlAttribute("title")] public string Title; [XmlText] // This bit is the troublesome bit! public LinkElement Link; } } 

基本上,我需要将元素的文本内容放入Links.Link但我正在尝试的属性[XmlText]不提供我期望的行为,我得到错误:

反映字段’链接’时出错。

如果有人能够指出我的方式的错误,我将非常感激!

谢谢。

也许只是使用string

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

在课程递归(一棵树)的那一刻 – 我不认为这是你的意图。

(我也切换到一个属性,但这不是问题 – string是大问题;但是有很多理由使用属性而不是字段,并且使用自动属性(C#3.0),没有什么借口不这样做)


编辑:另外,尝试查看最内部的exception; 在这种情况下,消息是:

无法序列化类型为LinksInterface.LinkElement的成员“链接”。 XmlAttribute / XmlText不能用于编码复杂类型。

这给出了问题所在的合理指示;-p

查看本文C#中的XML序列化 。 作者使用getter / setter将项添加到集合(文章中的数组),并将属性[XmlElement("link")]应用于getter / setter。

干杯。