2010-04-21 61 views
0

如何反序列化 “<的MyType > <起始日期> 01/01/2000 < /起始日期> </MyType的>”如何反序列化 “<MyType><StartDate> 01/01/2000</StartDate></MyType>”

下面

是MyType的定义

[Serializable] 
public class MyType 
{ 
    DateTime _StartDate; 
    public DateTime StartDate 
    { 
     set 
     { 
      _StartDate = value; 
     } 
     get 
     { 
      return _StartDate; 
     } 
    } 
} 

得到了以下错误反序列化

{“字符串'01/01/2000' 不是 有效AllXsd值。 ”} [System.FormatException]:{“ 字符串'01/01/2000' 是不是一个有效 AllXsd值“} Data:{System.Collections.ListDictionaryInternal} HelpLink:null InnerException:null 消息:”字符串'01/01/2000'不是有效的AllXsd值。“ 来源: “的System.Xml” 堆栈跟踪:“在System.Xml.Schema.XsdDateTime..ctor(字符串 文本,XsdDateTimeFlags种个)\ r \ n在 System.Xml.XmlConvert.ToDateTime(字符串 S,XmlDateTimeSerializationMode dateTimeOption个)\ r \ n在 System.Xml.Serialization.XmlCustomFormatter.ToDateTime(字符串 值)\ r \ n在 System.Xml.Serialization.XmlSerializationReader.ToDateTime(字符串 值)\ r \ n在 微软.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMyType.Read2_MyType(Boolean isNullable,Boolean checkType)\ r \ n
at Microsoft.Xml.Seri alization.GeneratedAssembly.XmlSerializationReaderMyType.Read3_MyType()” TargetSite:{无效.ctor(System.String, System.Xml.Schema.XsdDateTimeFlags)}

回答

0

总之,我认为你不知道。您的问题是,XmlSerializer试图将01/01/2000解析为DateTime值,但01/01/2000不是valid XML date

如何创建XML字符串?你有对这个代码的控制吗?如果是这样,请使用XmlConvert.ToString(DateTime)方法获取符合标准的字符串。

+0

@Fredrik:不,我无法控制XML字符串的形成。它是从客户端发送的。在我身边,我试图反序列化给定的XML字符串。 – afin 2010-04-21 16:21:28

1

可能DateTime反序列化器需要与您在那里的格式不同的格式。

我使用的格式如下:

2010-01-20T13:40 

(这是一个UTC日期时间,你也可以对字符串的结尾时区)

我用这个格式发送到与[DataMember]属性和DataContractSerializer处理它很好,所以我想它也可以用于Xml序列化。

有一个关于你得到的错误的线程here看起来可能有帮助。

2

如果你真的无法控制输入XML,但仍然需要解析它(尽管是不恰当的),像这样的事情是我过去所做的。

[Serializable] 
public class MyType 
{ 
    DateTime _StartDate; 
    public string StartDate 
    { 
     set 
     { 
      _StartDate = DateTime.Parse(value); 
     } 
     get 
     { 
      return _StartDate.ToShortDateString(); 
     } 
    } 
} 
+0

@awlawl:那么,没有办法反序列化DateTime类型? – afin 2010-04-21 18:04:01

相关问题