XML 文档(1, 2)中有错误:不应有 <xml xmlns=''>
         
                原创
        
    
    
                
             ©著作权归作者所有:来自51CTO博客作者江南野鹤的原创作品,请联系作者获取转载授权,否则将追究法律责任        
            
                    
                
症状
用XmlSerializer进行xml反序列化的时候,程序报错:
不应有 <xml xmlns=''>。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 不应有 <xml xmlns=''>。
我的xml如下:
| 1 | <xml><ToUserName><![CDATA[gh_1874139df55e]]></ToUserName> | 
 
| 2 | <FromUserName><![CDATA[ov4latyc1pi0_Ics0uHY6QTLRDg8]]></FromUserName> | 
 
| 3 | <CreateTime>1388056811</CreateTime> | 
 
| 4 | <MsgType><![CDATA[text]]></MsgType> | 
 
| 5 | <Content><![CDATA[哈哈]]></Content> | 
 
| 6 | <MsgId>5961658608245054071</MsgId> | 
 
 
 
要反序列化的对象类型:
| 01 | publicclassWXP_Message | 
 
| 03 |         publicintMessageId { get; set; } | 
 
| 05 |         publicstringToUserName { get; set; } | 
 
| 07 |         publicstringFromUserName { get; set; } | 
 
| 09 |         publicDateTime CreateTime { get; set; } | 
 
| 11 |         publicstringMsgType { get; set; } | 
 
| 13 |         publicstringEvent { get; set; } | 
 
| 15 |         publicstringContent { get; set; } | 
 
| 17 |         publicstringPicUrl { get; set; } | 
 
| 19 |         publicstringFormat { get; set; } | 
 
| 21 |         publicstringLocation_X { get; set; } | 
 
| 23 |         publicstringLocation_Y { get; set; } | 
 
| 25 |         publicstringScale { get; set; } | 
 
| 27 |         publicstringLabel { get; set; } | 
 
| 29 |         publicstringTitle { get; set; } | 
 
| 31 |         publicstringDescription { get; set; } | 
 
| 33 |         publicstringUrl { get; set; } | 
 
| 35 |         publicintMsgId { get; set; } | 
 
| 37 |         publicintMediaId { get; set; } | 
 
| 39 |         publicintThumbMediaId { get; set; } | 
 
| 41 |         publicboolIsReplied { get; set; } | 
 
| 43 |         publicstringReplyContent { get; set; } | 
 
| 45 |         publicDateTime ReplyTime { get; set; } | 
 
| 47 |         publicboolIsGiftVoucher { get; set; } | 
 
| 49 |         publicintIntTime { get; set; } | 
 
 
 
 
 
 
 
诊断
这个错误一般都是xml不能反序列化为目标对象类型造成的,我的这个原因是因为:xml的根节点(xml)和对象名(wxp_message)不一样导致的不能反序列化
 
 
 
解决
修改xml根节点和对象类名一样就可以了
| 1 | <WXP_Message><ToUserName><![CDATA[gh_1874139df55e]]></ToUserName> | 
 
| 2 | <FromUserName><![CDATA[ov4latyc1pi0_Ics0uHY6QTLRDg8]]></FromUserName> | 
 
| 3 | <CreateTime>1388056811</CreateTime> | 
 
| 4 | <MsgType><![CDATA[text]]></MsgType> | 
 
| 5 | <Content><![CDATA[哈哈]]></Content> | 
 
| 6 | <MsgId>5961658608245054071</MsgId> |