使用属性反序列化XML CData

时间:2016-10-19 07:16:24

标签: c# xml xmlserializer

我有一个xml文件,我尝试为它编写一个类型。 在某个时刻,我的大脑会冻结。

这个xml是我写的最小的。

<Level ID="SomeID">
    <Selection Name="AnotherID">
        <Content><![CDATA[SomeData]]></Content>
    </Selection>
</Level>

在cs中我想写一个类作为xmlserializer的类型。

public class Level
{
    [XmlAttribute]
    public string ID {get; set;}
    public ??? Selection {get; set;}
    //What is the type of CDATA
    //Where would the Name Attribute go?
}

选择必须是具有属性的类,而选择的类型是CData。无论CData是什么,它都是标准类型,所以我无法设置Name属性。

如何在cs类中解决此问题? - xml是遗留的,现在无法更改。

1 个答案:

答案 0 :(得分:1)

你有一个良好的开端..这应该可以帮助你完成其余部分。

public class Level
{
    [XmlAttribute]
    public string ID {get; set;}
    public Selection Selection {get; set;}
}

public class Selection {
    [XmlAttribute]
    public string Name {get;set;}
    public Content Content {get;set;}
}

public class Content {
    [XmlText]
    public string Data {get;set;}
}

因此,要通过对象模型访问该CDATA文本,您可以访问Level.Selection.Content.Data