代码之家  ›  专栏  ›  技术社区  ›  Archie

在C中序列化没有GMT的日期时间#

  •  1
  • Archie  · 技术社区  · 14 年前

    我已经从xsd生成了类,并希望序列化 DateTime

    private System.DateTime timeGMT; 
    
     [System.Xml.Serialization.XmlElementAttribute(DataType="time")] 
     public System.DateTime TimeGMT { 
         get { 
             return this.timeGMT; 
         } 
         set { 
             this.timeGMT= value; 
         } 
     }
    

    但当我分配任何 日期时间

    <TimeGMT>12:00:00.0000000-04:00</TimeGMT>
    

    但我想把它序列化为

    <TimeGMT>12:00:00</TimeGMT>
    

    我看了一下这个问题:

    Serializing DateTime to time without milliseconds and gmt

    和我的情况很相似。但我的问题是,我还想根据xsd验证生成的xml。所以我无法将返回类型转换为字符串。如果使用字符串作为返回类型,则在生成XML时会出现异常:

    时间是XMLElementAttribute.DataType属性的无效值。只能为基元类型指定该属性。

    还有别的出路吗?

    2 回复  |  直到 5 年前
        1
  •  0
  •   EMP    14 年前

    你的问题的答案是你需要做什么。您仍然可以根据XSD验证结果XML,但是XSD不应该将此元素定义为XML datetime

        2
  •  0
  •   Community CDub    8 年前

    我没有更改XML模式,因为它是用作标准的。我搬走了

    [System.Xml.Serialization.XmlElementAttribute(DataType="time")]  
    

    并使用

    Serializing DateTime to time without milliseconds and gmt