反序列化不同的命名xml节点

时间:2010-06-09 07:56:03

标签: xml serialization

在反序列化XML时,有没有办法将不同的命名xml节点转换为一个类

示例XML:

<items>
    <aaa>value</aaa>
    <bbb>value</bbb>
</items>

Normaly我会写:

[XmlRoot("items")]
class Items
{
    [XmlElement("aaa")]
    public string aaa;

    [XmlElement("bbb")]
    public string bbb;
}

但现在我想做这样的事情

[XmlRoot("items")]
class Items
{
    [XmlElement("aaa")]
    [XmlElement("bbb")]
    public List<string> item;
}

如果将“aaa”和“bbb”添加到同一列表中,我很乐意。

1 个答案:

答案 0 :(得分:0)

在反序列化过程中你不能这样做 - 想象一下你的第二个对象如何被序列化为XML,如果你的方法可行......那么XML序列化器怎么知道是否以及何时使用“aaa”或“bbb”作为元素标签......

您可以做的是首先将直接序列化转换为XML可序列化对象类型(具有aaabbb属性),然后如果您真的必须,则创建一个包含{的单独对象{1}}并将所有数据粘贴在那里。