XML 反序列化问题

lvwei12345 2017-01-05 12:18:29
下面是我接收到的字符串---------------------------------------------
<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<WorkTime xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://192.168.0.186/\">\r\n <WorkTimeID>2</WorkTimeID>\r\n <WorkName>网络部</WorkName>\r\n <MorStartTime>2016-11-15T08:30:00</MorStartTime>\r\n <MorEndTime>2016-11-15T08:30:00</MorEndTime>\r\n <AfterStartTime>2016-11-15T08:30:00</AfterStartTime>\r\n <AfterEndTime>2016-11-15T08:30:00</AfterEndTime>\r\n <Company>\r\n <CompanyID>14</CompanyID>\r\n <CompanyUserName>cheshi1</CompanyUserName>\r\n <CompanyPassWord>6184688487528B7894C42A109E776862</CompanyPassWord>\r\n <CompanyName>测试中</CompanyName>\r\n <State>1</State>\r\n <Address>测试中</Address>\r\n <IsSon>1</IsSon>\r\n <StartDateTime xsi:nil=\"true\" />\r\n <EndDateTime xsi:nil=\"true\" />\r\n <Cost xsi:nil=\"true\" />\r\n <AddTime>2016-11-08T14:46:57</AddTime>\r\n <LastLoginTime xsi:nil=\"true\" />\r\n </Company>\r\n <AddTime>2016-11-15T10:55:39</AddTime>\r\n</WorkTime>
下面是我的类:
public class WorkTime
{
/// <summary>
/// 工作时间ID
/// </summary>
public int WorkTimeID { get; set; }
/// <summary>
/// 工作时间名称
/// </summary>
public string WorkName { get; set; }
/// <summary>
/// 上午开始时间
/// </summary>
public DateTime? MorStartTime { get; set; }
/// <summary>
/// 上午结束时间
/// </summary>
public DateTime? MorEndTime { get; set; }
/// <summary>
/// 下午开始时间
/// </summary>

public DateTime? AfterStartTime { get; set; }
/// <summary>
/// 下午结束
/// </summary>

public DateTime? AfterEndTime { get; set; }
/// <summary>
/// 所属公司
/// </summary>
public Company Company { get; set; }
/// <summary>
/// 添加时间
/// </summary>

public DateTime? AddTime { get; set; }
}
子类-----------------------------------------------------------------------------------
public class Company
{
/// <summary>
/// 公司ID
/// </summary>
public virtual int CompanyID { get; set; }

/// <summary>
/// 公司用户名
/// </summary>
public virtual string CompanyUserName { get; set; }
/// <summary>
/// 公司密码
/// </summary>
public virtual string CompanyPassWord { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public virtual string CompanyName { get; set; }

/// <summary>
/// 状态:0为启用/1为禁用
/// </summary>
public virtual int? State { get; set; }
/// <summary>
/// 公司地址
/// </summary>
public virtual string Address { get; set; }
/// <summary>
/// 是否有子公司:0为有/1为没有
/// </summary>
public virtual int? IsSon { get; set; }

/// <summary>
/// 公司负责人
/// </summary>
public virtual string Person { get; set; }
/// <summary>
/// 公司负责人电话
/// </summary>
public virtual string PersonTel { get; set; }
/// <summary>
/// 对应销售联系人
/// </summary>
public virtual string SalePerson { get; set; }
/// <summary>
/// 对应销售联系电话
/// </summary>
public virtual string SalePersonTel { get; set; }
/// <summary>
/// 公司网络信息人员
/// </summary>
public virtual string InterPerson { get; set; }
/// <summary>
/// 公司网络信息人员电话
/// </summary>
public virtual string InterPersonTel { get; set; }

/// <summary>
/// 开始使用时间
/// </summary>
public virtual DateTime? StartDateTime { get; set; }
/// <summary>
/// 到期时间
/// </summary>
public virtual DateTime? EndDateTime { get; set; }
/// <summary>
/// 费用
/// </summary>

public virtual decimal? Cost { get; set; }
/// <summary>
/// 备注
/// </summary>
public virtual string Remarks { get; set; }
/// <summary>
/// 添加时间
/// </summary>
public virtual DateTime? AddTime { get; set; }
/// <summary>
/// 最后登录地址
/// </summary>
public virtual DateTime? LastLoginTime { get; set; }
/// <summary>
/// 最后登录IP
/// </summary>
public virtual string IP { get; set; }

/// <summary>
/// 上级公司
/// </summary>
public virtual Company Parent { get; set; }
}

我的反序列方法------------------------------------------------------------
public static T XmlDeserialize<T>(string s, Encoding encoding)
{
if (string.IsNullOrEmpty(s))
throw new ArgumentNullException("s");
if (encoding == null)
throw new ArgumentNullException("encoding");

XmlSerializer mySerializer = new XmlSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(encoding.GetBytes(s)))
{
using (StreamReader sr = new StreamReader(ms, encoding))
{
return (T)mySerializer.Deserialize(sr);
}
}
}

我调用方法的代码--------------------------------------------------------------------
WorkTime work= XmlHelpers.XmlDeserialize<WorkTime>(str, Encoding.UTF8);


运行到 return (T)mySerializer.Deserialize(sr); 这一步的时候错误提示
System.InvalidOperationException: There is an error in XML document.
...全文
1137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgaimin 2017-01-06
  • 打赏
  • 举报
回复
你把这一串字符串整理一遍,把里面的\R\N去掉。
EnForGrass 2017-01-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html
lvwei12345 2017-01-05
  • 打赏
  • 举报
回复
就这个问题求远程协助,有偿协助:请加QQ40476785
Justin-Liu 2017-01-05
  • 打赏
  • 举报
回复
xml有问题
lvwei12345 2017-01-05
  • 打赏
  • 举报
回复
有转义符应该是正常吧?这个是系统自动给加上的啊,不是返回来的字符串里包含 的
丰云 2017-01-05
  • 打赏
  • 举报
回复
字符串里大量转义符,不识别才正常

110,531

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧