XmlSerializer的:字符串''是不是有效的AllXsd值 [英] XmlSerializer: The string '' is not a valid AllXsd value

查看:2052
本文介绍了XmlSerializer的:字符串''是不是有效的AllXsd值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到这个消息,字符串'2006年7月22日上午12:00:00'是不是一个有效AllXsd价值。,反序列化XML时,该元素包含日期,这是物业是应该被映射到元素

  [的XmlElement(FEC_INICIO_REL的typeof(DateTime的))]
公开日期时间? FechaInicioRelacion {获得;组; }
 

我是不是做错了什么?

更新: 下面是XML:

 < D​​etalle>
  < NOM_ASOC> FINANCIERAPanameña< / NOM_ASOC>
  < D​​ESCR_CORTA_RELA> $ P $科普工作。个人< / DESCR_CORTA_RELA>
  < FEC_INICIO_REL> 2006年7月22日上午十二时00分00秒< / FEC_INICIO_REL>
  < FEC_FIN_REL> 2008年9月22日上午12点00分00秒< / FEC_FIN_REL>
  < MONTO_ORIGINAL> 1160.0000< / MONTO_ORIGINAL>
  &其中; NUM_PAGOS→2&其中; / NUM_PAGOS>
  < D​​ESCR_FORMA_PAGO> PAGOS VOLUNTARIOS< / DESCR_FORMA_PAGO>
  < IMPORTE_PAGO> 59.9400< / IMPORTE_PAGO>
  < FEC_ULTIMO_PAGO> 11/15/2006 12:00:00< / FEC_ULTIMO_PAGO>
  < MONTO_ULTIMO_PAGO> 0.0000< / MONTO_ULTIMO_PAGO>
  < D​​ESCR_OBS_CORTA />
  < SALDO_ACTUAL> 1078.3900< / SALDO_ACTUAL>
  &其中; NUM_DIAS_ATRASO> 0℃/ NUM_DIAS_ATRASO>
  &其中; HISTORIA→1&其中; / HISTORIA>
  < MONTO_CODIFICADO />
  < FEC_ACTUALIZACION> 10/17/2008 12:00:00< / FEC_ACTUALIZACION>
  < COD_GRUPO_ECON> < / COD_GRUPO_ECON>
  < TIPO_ASOC> < / TIPO_ASOC>
  < NUM_REFER> 2008628116< / NUM_REFER>
< / Detalle>
 

解决方案

我通过存储在字符串中的日期,然后创建一个getter,它解析日期并返回它的日期时间解决了这个问题。

样品code:

  [的XmlElement(有效)
    公共字符串_Valid
    {
        得到;
        组;
    }

    [XmlIgnore]
    公共BOOL?有效
    {
        得到
        {
            如果(!string.IsNullOrWhiteSpace(_Valid))
            {
                返回bool.Parse(_Valid);
            }

            返回null;
        }
    }
 

I'm getting this message,"The string '7/22/2006 12:00:00 AM' is not a valid AllXsd value.", when deserializing an XML, the element contains a date, this is the property that is supposed to be mapped to the element:

[XmlElement("FEC_INICIO_REL",typeof(DateTime))]
public DateTime? FechaInicioRelacion { get; set; }

Am I doing something wrong?

UPDATE: Here is the XML:

<Detalle>
  <NOM_ASOC>Financiera Panameña</NOM_ASOC>
  <DESCR_CORTA_RELA>PREST. PERSONAL</DESCR_CORTA_RELA>
  <FEC_INICIO_REL>7/22/2006 12:00:00 AM</FEC_INICIO_REL>
  <FEC_FIN_REL>9/22/2008 12:00:00 AM</FEC_FIN_REL>
  <MONTO_ORIGINAL>1160.0000</MONTO_ORIGINAL>
  <NUM_PAGOS>2</NUM_PAGOS>
  <DESCR_FORMA_PAGO>PAGOS VOLUNTARIOS</DESCR_FORMA_PAGO>
  <IMPORTE_PAGO>59.9400</IMPORTE_PAGO>
  <FEC_ULTIMO_PAGO>11/15/2006 12:00:00 AM</FEC_ULTIMO_PAGO>
  <MONTO_ULTIMO_PAGO>0.0000</MONTO_ULTIMO_PAGO>
  <DESCR_OBS_CORTA />
  <SALDO_ACTUAL>1078.3900</SALDO_ACTUAL>
  <NUM_DIAS_ATRASO>0</NUM_DIAS_ATRASO>
  <HISTORIA>1</HISTORIA>
  <MONTO_CODIFICADO />
  <FEC_ACTUALIZACION>10/17/2008 12:00:00 AM</FEC_ACTUALIZACION>
  <COD_GRUPO_ECON>  </COD_GRUPO_ECON>
  <TIPO_ASOC>  </TIPO_ASOC>
  <NUM_REFER>2008628116</NUM_REFER>
</Detalle>

解决方案

I solved the issue by storing the date in string and then creating a getter which parses the date and returns it as DateTime.

Sample code:

    [XmlElement("Valid")]
    public string _Valid
    {
        get;
        set;
    }

    [XmlIgnore]
    public bool? Valid
    {
        get
        {
            if (!string.IsNullOrWhiteSpace(_Valid))
            {
                return bool.Parse(_Valid);
            }

            return null;
        }
    }

这篇关于XmlSerializer的:字符串''是不是有效的AllXsd值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆