用属性反序列化XML CData

本文关键字:CData XML 反序列化 属性 | 更新日期: 2023-09-27 18:13:36

我有一个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 CData

你有一个良好的开端。这应该可以帮助你完成剩下的工作。

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