在List中反序列化List

本文关键字:List 反序列化 | 更新日期: 2023-09-27 18:05:38

我有一些麻烦让这个工作:

我的XML看起来像:

<root>
    <item>
        <id></id>
        <name></name>
        <CollectionProp>
            <item>
                <id></id>
                <name></name>
            </item>
        </CollectionProp>
    </item>
</root>

我的类是这样的:

public class Item
{
    public int id { get; set; }
    public string name { get; set; }
    public List<CollectionProp> CollectionProp { get; set; }
}

和另一个:

public class CollectionProp
{
    public int id { get; set; }
    public string name { get; set; }
}

我还试图围绕CollectionProp包装另一个类

CollectionPropCollection : List<CollectionProp>

也尝试:CollectionPropCollection类与/或与属性"item"类型的CollectionProp。

下面是我的execute语句:

var result = client.Execute<List<Item>>(request);

EDIT Aug 19:

好吧,我的帖子可能没有清楚地指出我的问题。所以现在我想我把问题分解成以下几个部分:

XmlDeserializer在区分

下的项和 下的项时存在问题。

所以响应下面有2项,每个下面有3项,我的反序列化结果有8个对象。第一个有值,接下来的3个属性设置为null,第四个有值,依此类推....

在List中反序列化List

我该如何解决这个问题呢:item under需要解析为objectA, item under是item under root的子元素,需要解析为objectB

如果xml文件是一个序列化的Item,你可以这样做:

XmlSerializer serializer = new XmlSerializer(typeof(Item)); //or if you have a item variable item.GetType()
FileStream stream = new FileStream(pathToFile, FileMode.Open, FileAccess.ReadWrite);
Item item = (Item) serializer.Deserialize(stream);
stream.Close();

更新

当它是一个项目列表时,您只需将typeof(Item)替换为typeof(List<Item>)并将其转换为List<Item>

相关文章: