[英]using AutoMapper for map XML to Object with List Property
我知道用于映射XML来强类型对象的正确方法的基础,但是我从服务中收到的XML是不同的! 我的XMl是这样的:
<Group>
<Title>friends</Title>
<Member>
<Name>Omid</Name>
</Member>
<Member>
<Name>Kourosh</Name>
</Member>
<Group>
我的对象是:
public class Group
{
public string Title { get; set; };
public ICollection<Member> Members { get; set; };
}
因此,当我尝试将XElement(从XML)映射到Group时,成员不会映射:(最好的方法是什么?使用AutoMapper的特定配置更改XML?如何?谢谢?
我终于阅读了这篇有用的文章 ,并将_mapItems更改为此,以解决我的问题:
private static Func<XElement, string, List<XElement>> _mapItems =
(src, elementName) =>
src.Elements(elementName).ToList();
我读了同一篇文章 ,发现我的代码与XML格式有所不同。 与本文所建议的XML属性相比,我的是XML元素。 如果有人需要更多信息,这是一个StackOverflow 链接。我的 XML基于元素而不是基于属性。
我的XML如下所示,我的挑战是读取多个帐户
<consumer>
<id>XYZ</id>
<birthDate>1990-05-22</birthDate>
<accounts>
<account>
<id>123</id>
<regdate>2014-05-22</regdate>
</account>
</accounts>
我的代码与文章中的相同,但我将MapItems函数更改为以下代码
private static readonly Func<XElement, string, string, List<XElement>> MapItems =
(src, collectionName, elementName) =>
(src.Element(collectionName) ?? new XElement(collectionName)).Elements(elementName).ToList();
进行映射时,我将其映射如下
.ForMember(
dest => dest.Accounts,
opt => opt.MapFrom(src => MapItems(src, "accounts", "account")));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.