问题描述
我正在与一种具有非常特殊的消息格式的服务进行交互。这是一个示例:
<Response>
<Status>Success</Status>
<Authentication>
<Status>Success</Status>
<Token>12345</Token>
</Authentication>
<Field key="Name">Test</Field>
<Field key="Number">123</Field>
<Field key="PrimaryCustomer">
<Customer>
<Name>SomeCustomer</Name>
<PhoneNumber>12345678</PhoneNumber>
</Customer>
</Field>
...
<Field key="..."/>
<Field key="..."/>
<Field key="..."/>
<Field key="..."/>
<Field key="..."/>
<Field key="..."/>
<Field key="..."/>
...
</Response>
如您所见,它有一长串所谓的“字段”,其中“ key”属性是字段的名称(基本上),节点的内容是值。内容可以是任何类型,范围从基元到复杂对象。
我想将此结构映射到更简洁的模型中。类似于以下内容:
public class Response
{
public StatusEnum Status { get; set; }
public Authentication Authentication { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public Customer PrimaryCustomer { get; set; }
// Other strongly typed properties here
// ...
}
我看到的唯一类似的方法是字典,我不想使用它,因为它需要一个中介模型才能从干净的模型映射到带有字典的模型,然后再映射到XML。
我看到的另一件事是XmlChoiceIdentifier
,它允许基于枚举属性来自定义节点的可能值,但它实际上并不适合这种情况。
由于我必须使用这种结构对模型进行序列化和反序列化,因此,如果有一种方法可以干净地对其进行建模以与XmlSerializer
一起使用而无需额外的转换步骤,那将是非常有益的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)