C# Xml集合的反序列化

C# Xml集合的反序列化,c#,collections,xml-deserialization,C#,Collections,Xml Deserialization,我有一个如下所示的XML字符串: <ArrayOfObject> <Object> <Properties> <Property> <Name>TaskId1</Name> <Value>xxx</Value> </Property>

我有一个如下所示的XML字符串:

<ArrayOfObject>
    <Object>
        <Properties>
            <Property>
                <Name>TaskId1</Name>
                <Value>xxx</Value>
            </Property>
            <Property>
               <Name>Name</Name>
               <Value>demo</Value>
            </Property>
        </Properties>
    </Object>

    <Object>
        <Properties>
            <Property>
                <Name>TaskId2</Name>
                <Value>xxx</Value>
            </Property>
            <Property>
               <Name>Name</Name>
               <Value>demo2</Value>
            </Property>
        </Properties>
    </Object>
 </ArrayOfObject>

任务ID1
xxx
名称
演示
任务ID2
xxx
名称
演示2
下面是我的c代码。顺便说一句,我试过使用xmlArrayxmlArrayItem属性,但没有效果

[XmlRoot(ElementName = "ArrayOfObject",  IsNullable = false)]
public class GetTaskListResponse
{
    [XmlArray("Object")]
    public List<ObjectList> Objects { get; set; }
}

public class ObjectList
{
    [XmlArray("Properties")]
    [XmlArrayItem("Property")]
    public List<Property> PropertyList { get; set; }
}

public class Property
{
    public string Name { get; set; }
    public string Value { get; set; }
}
[XmlRoot(ElementName=“ArrayOfObject”,IsNullable=false)]
公共类GetTaskListResponse
{
[XmlArray(“对象”)]
公共列表对象{get;set;}
}
公共类对象列表
{
[XmlArray(“属性”)]
[XmlArrayItem(“财产”)]
公共列表属性列表{get;set;}
}
公共类财产
{
公共字符串名称{get;set;}
公共字符串值{get;set;}
}
如何将此XML反序列化为c#对象


我就是想不出来。

您可能需要对数据结构进行一些更改。请注意原始结构的变化,特别是如何处理“属性/属性”

当您想要创建与Xml对应的C#数据结构时,这将是一个很好的参考位置

[XmlRoot(ElementName="Property")]
public class Property 
{
   [XmlElement(ElementName="Name")]
   public string Name { get; set; }
   [XmlElement(ElementName="Value")]
   public string Value { get; set; }
}

[XmlRoot(ElementName="Properties")]
public class Properties 
{
    [XmlElement(ElementName="Property")]
    public List<Property> Property { get; set; }
}

[XmlRoot(ElementName="Object")]
public class Object 
{
   [XmlElement(ElementName="Properties")]
   public Properties Properties { get; set; }
}

[XmlRoot(ElementName="ArrayOfObject")]
public class GetTaskListResponse 
{
   [XmlElement(ElementName="Object")]
   public List<Object> Object { get; set; }
}
[XmlRoot(ElementName=“Property”)]
公共类财产
{
[xmlement(ElementName=“Name”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“Value”)]
公共字符串值{get;set;}
}
[XmlRoot(ElementName=“Properties”)]
公共类属性
{
[xmlement(ElementName=“Property”)]
公共列表属性{get;set;}
}
[XmlRoot(ElementName=“Object”)]
公共类对象
{
[xmlement(ElementName=“Properties”)]
公共属性属性{get;set;}
}
[XmlRoot(ElementName=“ArrayOfObject”)]
公共类GetTaskListResponse
{
[xmlement(ElementName=“Object”)]
公共列表对象{get;set;}
}
这将给出一个如下输出:


“我尝试过使用xmlArray和xmlArrayItem属性,但没有效果。”请准确显示您尝试过的内容。如果这里有人会写出与你自己已经尝试过的答案完全相同的答案呢?那对你有帮助吗?我对此表示怀疑。因此,请通过提供相关信息使我们更容易帮助您。