XmlSerializer 更改/覆盖 DateTime 格式

问题描述 投票:0回答:1

我有一个 XSD,其中包含 DateTime 类型的定义,如下所示:

  <xs:simpleType name="ISODateTime">
    <xs:restriction base="xs:dateTime"/>
  </xs:simpleType>

xsd.exe
为这种类型的元素生成 DateTime 属性。

        public System.DateTime dtName {
            get {
                return this.dtNameField;
            }
            set {
                this.dtNameField = value;
            }
        }

在序列化生成的类 XmlSerializer 的实例时,将 DateTimes 转换为

2023-04-28T14:47:37.0001+02:00
.

格式的值

但我需要将日期时间格式化为

YYYY-MM-DDThh:mm:ss.sssZ
YYYY-MM-DDThh:mm:ss.sss+/-hh:mm
.

我无法更改 XSD 或 XML 的验证规则。 有没有一种方法可以覆盖 XmlSerializer 在 XML 中格式化 DateTimes 的方式?

c# xml xsd xmlserializer
1个回答
0
投票

XML 是文本,因此您可以将其视为字符串,然后像这样转换为日期时间

    public class Test
    {
        public System.DateTime _dtNameField { get; set; }

        public string dtName
        {
            get
            {
                return _dtNameField.ToString("Format");
            }
            set
            {
                _dtNameField = DateTime.Parse(value);
            }
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.