У меня есть такой XML-файл
<xml>
<nodes>
<text/>
<img/>
<text/>
</nodes>
</xml>
Я хочу сопоставить объекты C # с этим, я знаю, как использовать XmlArrayItem, но только в тех случаях, когда в массиве только один тип элементов.Я думал, как это сделать, используя базовый класс для img и текстовых узлов.Но может ли кто-нибудь показать мой код для атрибутов C #, который я могу использовать для автоматической десериализации этого xml в объекты C #.Использование LINQ не требуется.
Вот как я планирую это сделать, но оно не работает:
[Serializable]
[XmlRoot ( "textfile" )]
public class TextFile
{
[XmlArray ( "nodes" )]
[XmlArrayItem ( "text", typeof(NodeText)), XmlArrayItem ( "img", typeof(NodeImg) )]
public List<NodeBase Nodes
{
get;
set;
}
}
[Serializable]
public class NodeBase
{
}
[Serializable]
public class NodeText : NodeBase
{
[XmlText]
public String CDataContent
{
get;
set;
}
}
[Serializable]
public class NodeImg : NodeBase
{
[XmlAttribute ( "width" )]
public Int32 Width
{
get;
set;
}
[XmlAttribute ( "height" )]
public Int32 Height
{
get;
set;
}
[XmlAttribute ( "src" )]
public String SourceImgStr
{
get;
set;
}
}