C# 反序列化复杂XML

C# 反序列化复杂XML,c#,xml,C#,Xml,我从一个名为Ctera的应用程序收到以下XML: <obj class="TeamPortal"> <att id="activationStatus"> <val>Enabled</val> </att> <att id="name"> <val>dana</val> </att> <att id="creat

我从一个名为Ctera的应用程序收到以下XML:

<obj class="TeamPortal">
    <att id="activationStatus">
        <val>Enabled</val>
    </att>
    <att id="name">
        <val>dana</val>
    </att>
    <att id="createDate">
        <val>2015-06-04T10:01:13</val>
    </att>
    <att id="alerts">
    </att>
    <att id="autoAssignmentRules">
        <list></list>
    </att>
    <att id="totalStorage">
        <obj class="TotalStorage">
            <att id="totalAvailable">
                <val>0</val>
            </att>
            <att id="totalInUse">
                <val>0</val>
            </att>
        </obj>
    </att>
</obj>

启用
达纳
2015-06-04T10:01:13
0
0
我想将其反序列化为如下所示的对象:

public class TeamPortal
{
    public string activationStatus { get; set; }

    public string name { get; set; }

    public string createDate { get; set; }

    public string alerts { get; set; }

    public List<string> autoAssignmentRules { get; set; }

    public TotalStorage totalStorage { get; set; }
}

public class TotalStorage
{
    public int totalAvailable { get; set; }

    public int totalInUse { get; set; }
}
公共类TeamPortal
{
公共字符串activationStatus{get;set;}
公共字符串名称{get;set;}
公共字符串createDate{get;set;}
公共字符串警报{get;set;}
公共列表自动分配规则{get;set;}
公共TotalStorage TotalStorage{get;set;}
}
公共类总存储
{
公共整数可用{get;set;}
公共整数totalInUse{get;set;}
}
我尽量避免将其解析为键值列表。
我对接收到的XML没有任何控制权。

它确实是一个基于键值的结构。大多数C#序列化都是基于Node-s的。请检查:这只是一个设计糟糕的模式。您无法将XML文件反序列化为完全不同的对象结构。您需要在反序列化之前使用XSLT转换XML文件,或者在反序列化之后将键/值对映射到所需的结构。一种可能的解决方法是创建从DynamicObject派生的两个类,它们解析对键/值对查找的属性访问调用在列表对象之前添加以下内容:[XmlElement(“autoAssignmentRules”)]。XmlElement从XML输出中消除了不必要的标记。填充
autoAssignmentRules
列表时,XML是什么样子的?它定义为基于键值的结构。大多数C#序列化都是基于Node-s的。请检查:这只是一个设计糟糕的模式。您无法将XML文件反序列化为完全不同的对象结构。您需要在反序列化之前使用XSLT转换XML文件,或者在反序列化之后将键/值对映射到所需的结构。一种可能的解决方法是创建从DynamicObject派生的两个类,它们解析对键/值对查找的属性访问调用在列表对象之前添加以下内容:[XmlElement(“autoAssignmentRules”)]。XmlElement从XML输出中消除了不必要的标记。填充
autoAssignmentRules
列表时,XML是什么样子的?