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

Rya*_*all 5 c# xml serialization xml-serialization

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

<?xml version="1.0" encoding="UTF-8"?>
<links>
    <link title="ABC">http://abc.co.uk</link>
    <link title="eBay">http://ebay.co.uk</link>
    <link title="Best Damn Site on the Web">http://stackoverflow.com</link>
</links>
Run Code Online (Sandbox Code Playgroud)

使用代码:

[XmlRoot("links")]
public class LinksInterface
{
    [XmlElement("link")]
    public List<LinkElement> Links;

    public class LinkElement
    {
        [XmlAttribute("title")]
        public string Title;
        [XmlText] // This bit is the troublesome bit!
        public LinkElement Link;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

反映字段'链接'时出错..

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

谢谢.

Mar*_*ell 5

也许只是使用string:

[XmlText]
public string Link {get;set;}
Run Code Online (Sandbox Code Playgroud)

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

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


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

无法序列化LinksInterface.LinkElement类型的成员'Link'.XmlAttribute/XmlText不能用于编码复杂类型.

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