如何在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。
干杯。