将xml序列化成IList<User>如何实现?xml内容:
<ArrayOfUserInfo xmlns="http://schemas.datacontract.org/2004/07/Newegg.CustomerManagement.Services.DomainModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><UserInfo><FirstName>f0</FirstName><LastName>l0</LastName><Status>silver</Status><Id>0</Id><LastModified>2011-04-04T17:25:19.2465668+08:00</LastModified></UserInfo><UserInfo><FirstName>f4</FirstName><LastName>l4</LastName><Status>silver</Status><Id>4</Id><LastModified>2011-04-04T17:25:19.2465668+08:00</LastModified></UserInfo><UserInfo><FirstName>f1</FirstName><LastName>l1</LastName><Status>silver</Status><Id>1</Id><LastModified>2011-04-04T17:25:19.2465668+08:00</LastModified></UserInfo><UserInfo><FirstName>f2</FirstName><LastName>l2</LastName><Status>silver</Status><Id>2</Id><LastModified>2011-04-04T17:25:19.2465668+08:00</LastModified></UserInfo><UserInfo><FirstName>f3</FirstName><LastName>l3</LastName><Status>silver</Status><Id>3</Id><LastModified>2011-04-04T17:25:19.2465668+08:00</LastModified></UserInfo></ArrayOfUserInfo>User类:
public class User
    {
        
        public string FirstName { get; set; }        
        public string LastName { get; set; }        
        public MembershipStatus Status { get; set; }        
        public int Id { get; set; }        //[DataMember]
        //public Uri UserId { get; set; }        
        public DateTime LastModified { get; set; }
    }    public enum MembershipStatus
    {
        premium,
        bronze,
        silver,
        gold
    }

解决方案 »

  1.   

    [XmlArray("")]   
    [XmlArrayItem("")]   或者把数据从XML中取出循环ADD到LIST中XML操作类
    或者linq2XML
      

  2.   

    不知道是不是这个意思。
    解析xml查找UserInfo元素列表,循环UserInfo列表给user赋值添加进list。
      

  3.   

    人家原来的类是 UserInfo ,你自己的是 User ,虽然属性相同,但是还是无法正常序列化反序列化的。试试个方法
    第一、改User为UserInfo
    第二、如果第一个不能改动,就新建个UserInfo空白类,继承User
      

  4.   


    //User类改一下,然后反序列化后强制转换为List<UserInfo>
    /// <summary>
            /// xml反序列化
            /// </summary>
            /// <param name="type"></param>
            /// <param name="content"></param>
            /// <returns></returns>
            public static object XmlDeseria(Type type, string content)
            {
                MemoryStream ms = null;
                object obj = null;            try
                {
                    XmlSerializer xml = new XmlSerializer(type);
                    byte[] b = Encoding.UTF8.GetBytes(content);
                    ms = new MemoryStream(b);
                    ms.Seek(0, SeekOrigin.Begin);
                    obj = xml.Deserialize(ms);
                }
                catch
                {
                    return null;
                }
                finally
                {
                    if (ms != null)
                    {
                        ms.Close();
                        ms.Dispose();
                    }
                }
                return obj;
            }
      

  5.   

    转载的一博文
    http://bonnibell.blog.sohu.com/65102568.html
      

  6.   

    把你的类加特性[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false, ElementName = "UserInfo")]
      

  7.   


    人家这里边本来就是个ARRAYOFUSERINFO   接过来以后是数据你自己就是USER[]这样的形式比如你的代理类引用LIST<USER> LISTUSER=CLIENT.GETUSERINFO().TOLIST();
      

  8.   


    你要完成自己的对方的实体类转换成自己实体类,需要自己手动写代码!
    //转换
            public static T WebModelToDTO<T>(this WebReferenceEntity entity) where T : class
            {
                Type type = typeof(T);
                T result = Activator.CreateInstance(type) as T;
                if (entity == null)
                    return null;
                if (result != null)
                {
                    foreach (PropertyInfo item in type.GetProperties())
                    {
                        foreach (PropertyInfo property in entity.GetType().GetProperties())
                        {
                            if (property.GetValue(entity, null) == null)
                            {
                                continue;
                            }                        if (property.Name == item.Name)
                            {
                                object value = property.GetValue(entity, null);
                                item.SetValue(result, value, null);
                                continue;
                            }                       
                        }
                    }
                }
                return result;
            }调用
    list.Select(model => model.WebModelToDTO<USER>()).ToList();
      

  9.   

    http://topic.csdn.net/u/20110405/14/da6c1e40-645d-499f-8b4b-5a9bb6e82d2c.html?seed=1581759027&r=72583993#r_72583993
    我这个和你这个类似,修改一下就可以解决你的问题了,参考一下吧,
      

  10.   


    [Serializable]
    public class User
    {
        ... //不想序列化的属性上面加[NonSerializable]
    }
    类和属性的名字最好和XML中的相对应
    否则需要你一个一个去指定[XmlElementAttribute("XML中的元素名字")]
    然后利用用4楼的方法反序列化
      

  11.   

    楼上已经给序列化的代码了,你的需求不需要转DTO,除非你有特殊操作!只要加特性就可以[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false, ElementName = "UserInfo")]
    public class User然后反序列化为你自己的实力集合就可以了,反序列化之后即可得到对象,不过你要注意的是,如果你接受的是数组类型的,那么你最好弄一个泛型类,继承LIST<USER>这样就可以了!
      

  12.   

    报namespace不对,大家帮忙看看