1

我在让它工作时遇到了一些麻烦:

我的 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>

还尝试过:具有/或具有 CollectionProp 类型的属性“项目”的 CollectionPropCollection 类。

这是我的执行语句:

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

编辑 8 月 19 日:

好的,我的帖子可能没有明确指出我的问题。所以现在我认为我将问题分解为以下几点:

XmlDeserializer 有问题区分下的项目和下的项目

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

任何想法我可以如何解决这个问题:需要将下的项目解析为objectA,下的项目,它是根下的项目的子项,需要解析为objectB?

4

1 回答 1

1

如果 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>

于 2011-08-12T13:16:57.897 回答